大多数人都熟悉这种模式:
public class MySingeltone {
public String mSomeReferenceTypeData;
public int mSomeValueTypeData;
private static MySingeltone mInstance;
private MySingeltone() {
}
public static MySingeltone getInstance() {
if (mInstance == null) {
mInstance = new MySingeltone();
}
return mInstance;
}
}
我遇到的问题是,最近发现mInstance在活动被销毁后不等于null,或者整个应用程序被关闭时,例如:
public class SomeActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MySingeltone mySingeltone = MySingeltone.getInstance();
mySingeltone.mSomeReferenceTypeData = "some value";
}
}
在关闭所有应用程序运行的活动(比如10秒后..)后,下次启动“SomeActivity”时,mInstance仍然保留着相同的引用,并且其字段上的值也相同。
为什么会这样?
我错过了什么?
Android何时回收属于应用程序的静态成员?