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对象,用来存储系统的一些信息.通常我们是 ...
随机推荐
- iOS url中文编码
有两种方法: 一,使用NSString的方法: NSString* string2 = [string1 stringByAddingPercentEscapesUsingEncoding:NSUTF ...
- JS WEB 交互问题
1 webView----->js #import "ViewController.h" @interface ViewController () @property (no ...
- Android Studio上NDK/JNI开发环境问题
基础环境: 操作系统 —— Windows 7 Android Studio —— 1.5.1(android-studio-bundle-141.2456560-windows.exe) NDK — ...
- JS中,!=, !== 和 !的区别和使用场景
var num = 1; var str = '1'; var test = 1; test == num //true 相同类型 相同值 test === num //true 相同类型 ...
- Linux内核:kthread_create(线程)、SLEEP_MILLI_SEC
转自:http://blog.csdn.net/guowenyan001/article/details/39230181 一.代码 #include <linux/module.h> # ...
- CozyRSS2开发记录0-win10开坑
1.回顾 距离上一篇<CozyRSS1.0 - 有可用性版本>,恰好两个月整.在初步完成CozyRSS的WPF桌面版后,按照设想的,开始搞一个手机版的CozyRSS.由于种种原因,并没有使 ...
- MSSQL2005后版本插入数据返回ID的新写法
例子: INSERT VolunteerSound_Table (Title,ArticleContent)OUTPUT Inserted.ID VALUES ('FirstVal','bbbbb') ...
- 消息中间件MetaQ高性能原因分析-转自阿里中间件
简介 MetaQ是一款高性能的消息中间件,经过几年的发展,已经非常成熟稳定,历经多年双11的零点峰值压测,表现堪称完美. MetaQ当前最新最稳定的稳本是3.x系统,MetaQ 3.x重新设计和实现, ...
- 【Android】1.开发环境搭建
一.配置JAVA环境变量 第一步:先右键计算机-->属性-->高级系统设置-->环境变量-->新建 第二步:新建需要建立三个环境变量,其实两个就可以,建立JAVA_HOME只是 ...
- 360浏览器导出Excel闪退BUG
最近这半个月在疯狂的修改各种BUG,所以比较少更新博客. 现在谈谈这个360浏览器导出Excel的BUG的解决方法. 该BUG常出现在win7系统与xp系统导出Excel的瞬间关闭导出弹窗. 目前互联 ...