如果一个应用程序有2个入口的,1个入口程序打开修改其中的内容,怎么实现另一个入口的数据也修改呢?

下面就用到Application来实现数据的共享,因为一个应用程序只有一个Application,Application还有一个更重要的功能就是数据的初始化

Application的oncreate的函数比activity的函数早执行

 public void onCreate() {super.onCreate();System.out.println("App oncreate");}

下面来看一下如何实现2个应用程序直接的数据共享:

首先MainActivity,把MainActivity的xml文件修改为main1.xml

然后新建第二个Activity,命名为Main2,

然后是布局,main1.xml和main2.xml的布局一样

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceLarge"android:text="Large Text"android:id="@+id/textView" /><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/editText" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="保存"android:id="@+id/btsave" />
</LinearLayout>

然后新建一个java文件,命名为App,继承自Application

public class App extends Application {private String textData="default";public String getTextData() {return textData;}public void setTextData(String textData) {this.textData = textData;}//application的oncreate的函数比activity的函数早执行
    @Overridepublic void onCreate() {super.onCreate();System.out.println("App oncreate");}@Overridepublic void onTerminate() {super.onTerminate();}@Overridepublic void onLowMemory() {super.onLowMemory();}//内存清理的时候
    @Overridepublic void onTrimMemory(int level) {super.onTrimMemory(level);}}

这里需要注意的一点就是我们需要把这个App类注册到AndroidManifest中,只用这样我们才能够实现数据的共享:AndroidManifest中的内容如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.yb.DataStorage"><applicationandroid:name="com.example.yb.DataStorage.App"android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"><!--  //会在界面上呈现2个图标,都是程序的入口--><activityandroid:name="com.example.yb.DataStorage.MainActivity"android:label="Main1"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:name="com.example.yb.DataStorage.Main2"android:label="Main2"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name=".ServiceActivity"></activity></application></manifest>

这个应用程序中,会有2个入口。因为我们在2个activity中,我们都注册了相同的内容:

<intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>

下面是MainActivity的,main2和MainActivity一样,只要改下 setContentView(R.layout.main1);

public class MainActivity extends AppCompatActivity {private TextView tv;private EditText ed;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);System.out.println("Main1 oncreate");setContentView(R.layout.main1);tv= (TextView) findViewById(R.id.textView);ed= (EditText) findViewById(R.id.editText);tv.setText("共享的数据是:"+getApp().getTextData());findViewById(R.id.btsave).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {((App)getApplicationContext()).setTextData(ed.getText().toString());tv.setText("共享的数据是:"+ed.getText().toString());}});}public App getApp(){return (App) getApplicationContext();}
}

这样就实了2个入口的程序数据共享,~~

转载于:https://www.cnblogs.com/DonAndy/p/6208853.html

Android使用Application的好处相关推荐

  1. Android采用Application总结一下

    什么是 Application Application和Activity,Service由于是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象.用 ...

  2. 装java 无法应用转换程序_应用程序崩溃“android.app.Application无法强制转换为”...

    我正在解散ORMlite.所以,我有这个DAO工厂类 public class DtoFactory extends Application { private SharedPreferences p ...

  3. Android中用Application类实现全局变量

    在Java中如果要使用全局变量,一般定义public static类型的变量.但是这种方法不符合Android的框架架构,Android中要使用Application context. Applica ...

  4. Android使用Application总结

    对于application的使用,一般是 在Android源码中对他的描述是; * Base class for those who need to maintain global applicati ...

  5. Android借助Application重写App的Crash(简易版)

    MainActivity如下: package cn.testcrash; import android.app.Activity; import android.os.Bundle; /*** De ...

  6. Android中Application类用法

    Application类 Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系 ...

  7. 新建Application 报错android.app.Application cannot be cast

    我在开发APP的时候重新使用了一个类,继承了android.app.Application.但是在运行的时候提示java.lang.ClassCastException: android.app.Ap ...

  8. 【异常】android.app.Application cannot be cast to****

    出这个异常的原因是在项目中添加了新application类(public class Application extends android.app.Application)之后,没有在manifes ...

  9. android 的Application应用

    说道application大家应该不会陌生,在J2ee中我们经常用到,但是在android中同样也存在这样一个东西,最近在做项目的时候就遇到问题,大家都知道通常我们在android中在activity ...

最新文章

  1. 二叉树(BST)之创建二叉搜索树
  2. Kubernetes入门——Kubernetes日志采集与监控告警
  3. RocketMQ 核心
  4. python扫雷的代码及原理_基于Python实现的扫雷游戏实例代码
  5. leetcode 636. Exclusive Time of Functions | 636. 函数的独占时间(Stack)
  6. SVG 和 CSS3 实现一个超酷爱心 Like 按钮
  7. 【软件质量】代码评审“亮红灯”的情况
  8. is,as,sizeof,typeof,GetType
  9. 21-hadoop-weibo推送广告
  10. 3ds max制作宋惠乔的教程----作者: 火星时代 来源: 火星时代
  11. doris的tablet副本修复相关情况总结
  12. 简单控制 xLang 窗体
  13. php fpm.conf 注释,php 中 php-fpm.conf
  14. 电脑白屏,电脑白屏是怎么回事?是系统的原因还是
  15. 虚拟机屏幕自适应问题
  16. 爬虫爬取二次元网站美女图片
  17. gitlab使用163邮箱向用户发送邮件
  18. 网站镶嵌网站显示代码
  19. 2021-2027全球与中国冰球护具市场现状及未来发展趋势
  20. --计算机专业就业前景--

热门文章

  1. C++笔记-设置cout输出数据的宽度和填充
  2. Linux学习笔记-gdb调试的补充说明
  3. Qt工作笔记-使用QGraphicsItem加载图片并实现碰撞
  4. linux检查nginx 状态,Nginx配置检测服务状态的实现方法,
  5. python6清空屏幕,python:文件的读取、创建、追加、删除、清空
  6. python返回类型为anytype_python判断变量类型时,为什么不推荐使用type()方法
  7. windows脚本编制引擎_说说 Windows 脚本宿主运行的几种方式
  8. excel 单元格求和大于某个数后返回列号_Excel最常用的几个函数,我都帮你整理好了!...
  9. 访谈编码怎么做_怎么才能让口才得到提升
  10. java cxf 工具_利用CXF工具开发WebService接口