我一直被这个“特性”困扰:当我使用返回按钮离开我的应用程序时,我可以告诉 onDestroy() 被调用,但是下次我运行我的应用程序时,Activity 类的所有静态成员仍然保留他们的价值观。请看下面的代码:
public class HelloAndroid extends Activity {
private static int mValue; // a static member here
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText((mValue != 0) ?
("Left-over value = " + mValue) : "This is a new instance");
setContentView(tv);
}
public void onDestroy() {
super.onDestroy();
mValue++;
}
}
上面的代码在 mValue 中显示了剩余的值,它会在会话结束时递增,这样我就可以确定调用了 onDestroy()。
我在这个论坛上找到了一个有用的答案,我明白在上面的代码中 mValue 是一个类成员,而不是一个实例成员。但是,在这种特殊情况下,我只有一个 HelloAndroid 活动,所以当他死时,一切都被清理干净,下次我回来时,一切都重新开始,这不是真的吗?(或者,系统中是否还有其他一些神秘的东西在 onDestroy() 之后仍然保留它,这样它就不会死???)
(上面只是一个变量,如果它是一堆对象引用怎么办?每一块都是一个单独的可重新收集的内存。GC是否有可能收集其中一些但不是全部或全部?这真的让我很烦恼。 )