Android使用Application的好处
如果一个应用程序有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"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Large Text"
android:id="@+id/textView" /> <EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText" /> <Button
android: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的函数早执行
@Override
public void onCreate() {
super.onCreate();
System.out.println("App oncreate");
}
@Override
public void onTerminate() {
super.onTerminate();
}
@Override
public void onLowMemory() {
super.onLowMemory();
}
//内存清理的时候
@Override
public 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"> <application
android: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个图标,都是程序的入口-->
<activity
android: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>
<activity
android: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;
@Override
protected 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() {
@Override
public void onClick(View view) {
((App)getApplicationContext()).setTextData(ed.getText().toString());
tv.setText("共享的数据是:"+ed.getText().toString());
}
});
}
public App getApp(){
return (App) getApplicationContext();
}
}
这样就实了2个入口的程序数据共享,~~

Android使用Application的好处的更多相关文章
- Android笔记——Application的作用
一.Application是什么 Application和Actovotu,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象, ...
- [转]Android中Application类的用法
原文链接:http://www.cnblogs.com/renqingping/archive/2012/10/24/Application.html Application类 Application ...
- Android代码优化----Application节点的模板写法及UI工具类
一. MyApplication类的编写: 新建一个类MyApplication,继承自Application.代码如下: MyApplication.java: package com.smyhva ...
- 【转】Android中Application类用法
转自:http://www.cnblogs.com/renqingping/archive/2012/10/24/Application.html Application类 Application和A ...
- Android使用Application总结
对于application的使用,一般是 在Android源码中对他的描述是; * Base class for those who need to maintain global applicati ...
- 在android.app.Application中定义全局变量
在Android应用中使用全局变量,除了public的静态变量,还有更优雅的方式是使用android.app.Application. 启动Application时,系统会创建一个PID,即进程ID, ...
- 【转载】Android使用Application总结
Application 配置全局Context 第一步.写一个全局的单例模式的MyApplication继承自Application 覆盖onCreate ,在这个方法里面实例化Application ...
- Android中用Application类实现全局变量
最近在项目中,遇到了application这个类,开始不知道有什么用,经过学习后才知道它的用途也蛮大的,举个例子,如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型:而在 ...
- Android中Application全局方法(变量)的调用
Application和Actovotu,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息.通常我们是 ...
随机推荐
- Apple Pay 初探
Apple Pay 一.概述 1.支付方式:Touch ID/ Passcode 2.设备要求:iPhone6以上(iphone:线上/线下 ipad:线上 watch:线下) 3.系统要求:iOS8 ...
- 自动加载dll,加载dll中程序集的信息。
自动加载程序集,解析程序集中的方法. private static object Invoke(string lpFileName, string Namespace, string ClassNam ...
- 网页端打开手机上的app
iOS/Android 浏览器(h5)及微信中唤起本地APP 在移动互联网,链接是比较重要的传播媒质,但很多时候我们又希望用户能够回到APP中,这就要求APP可以通过浏览器或在微信中被方便地唤起. 这 ...
- Android 自定义ToolBar详细使用
自定义xml设置ToolBar,通过menu文件扩展选项,通过继承baseactivity使用 1.ToolBar布局 <?xml version="1.0" encodin ...
- Java基础学习(三)
/* java中的八种基本数据类型: 整数: byte . short . int . long 小数: float double 字符: char 布尔: boolean 字符串的类型: Strin ...
- Quartz.Net简单使用
Quartz.Net为开源的作业调度框架,使用方便,实现IJob接口,及相关配置,即可实现调度. 项目包安装: install-package Quartz install-package log4n ...
- OpneCv2.x 模块结构
转自:http://blog.csdn.net/huang9012/article/details/21811271 之前啃了不少OpenCV的官方文档,发现如果了解了一些OpenCV整体的模块架构后 ...
- [算法总结]partition (quicksort)
private int partition(int[] nums, int lo, int hi) { if (lo >= hi) { return lo; } int i = lo; int ...
- [leetcode] 数字游戏
169. Majority Element Given an array of size n, find the majority element. The majority element is t ...
- P87LPC760/61/62/64/67/68/69/78/79芯片解密单片机破解价格
NXP恩智浦P87LPC760/61/62/64/67/68/69/78/79芯片解密单片机破解 NXP LPC700系列单片机解密型号: P87LPC759.P87LPC760.P87LPC761. ...