application相关知识
Application和Activity,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息。通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己 的Application,也很简单创建一个类继承 Application并在manifest的application标签中进行注册(只需要给Application标签增加个name属性把自己的 Application的名字定入即可)。
android系统会为每个程序运行时创建一个Application类的对象且仅创建一个,所以Application可以说是单例 (singleton)模式的一个类.且application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局 的单例的,所以在不同的Activity,Service中获得的对象都是同一个对象。所以通过Application来进行一些,数据传递,数据共享 等,数据缓存等操作。
实现一个activity改变另一个activity的组件
1 定义一个类 继承Application
并给定属性flag 也就是相当于全局变量 在manifest配置文件中,把默认的application换成我们自己定义的
public class MyApp extends Application {
private boolean flag;
public boolean getFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
}
//manifest配置文件
<application
android:name="com.wyq.test.MyApp"/>
2 在需要交互的两个类中进行处理
MainActivity中有一个按钮和一个文本框,按钮的监听跳转到OtherActivty,在OtherActivity中修改全局变量,等到再次返回MainActivity中时,需要判断全局变量,根据变量修改文本框显示的值
//MainActivity中:
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
MyApp myApp = (MyApp) MainActivity.this.getApplication();
if (myApp.getFlag()) {
((TextView) findViewById(R.id.tv)).setText("修改了");
// 重置参数
myApp.setFlag(false);
} else {
((TextView) findViewById(R.id.tv)).setText("没修改");
}
}
//otherActivity中:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_other);
((Button) findViewById(R.id.update))
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
MyApp myApp = (MyApp) OtherActivity.this
.getApplication();
myApp.setFlag(true);
}
});
}
转自:
http://blog.163.com/weishao_blog/blog/static/215103029201332610446832/
本文介绍如何在Android应用中使用Application类作为全局变量容器,实现不同组件间的数据共享。通过定义自定义Application类,并在Manifest文件中注册,可以轻松地在Activity和服务间传递数据。
288

被折叠的 条评论
为什么被折叠?



