在安卓中一种比较好的储存全局共享变量的方法是继承Application,将全局变量写入继承的Application类中,然后在Activity或Service中通过getApplication()方法来获全局变量中.形如以下用法:
//MyApplication.java
public class MyApplication extends Application{
public WeakReference<MyPublicData> d;
public void setMyPublicData(MyPublicData _d){
d = null;
d = new WeakReference<MyPublicData>(_d);
}
public MyPublicData getMyPublicData(){
return d.get();
}
}
//Activity_1.java
d = new MyPublicData(this);
((MyApplication)this.getApplication()).setMyPublicData(d);
//Activity_2.java
MyPublicData d = ((MyApplication)this.getApplication()).getMyPublicData();
最后在manifest中application标签上加入name项:
<application
...
android:name=".MyApplication">
我的个人习惯是用一个MyPublicData来储存各种全局变量,这样比较符合语义而且比较容易修改.
例子中在Activity_1中初始化MyPublicData是因为项目设计因素,个人建议将MyPublicData的初始化放在MyApplication的OnCreate中.