我一直被这个“特性”困扰着:当我使用返回按钮离开我的应用时,我可以看到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是否有可能收集其中一些但不是全部?这真的让我很困扰。)