在安卓中一種比較好的儲存全局共享變量的方法是繼承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中.