public class TestActivity extends Activity {
public static TestActivity mTestActivity;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTestActivity = this;
}
@Override
protected void onDestroy() {
mTestActivity = null;
super.onDestroy();
}
}
我可以问一个非常新秀的问题吗? 与活动ALWAYS的静态链接是否会导致内存泄漏?即使我在破坏它'它'它?
修改 如果存在内存泄漏,即使你在销毁时“无效”,你能解释一下原因吗? 我有几年的Java经验,但我无法理解为什么破坏的'null'不会释放内存。
答案 0 :(得分:1)
如果你在破坏时将其置零,那么就没有必要保持静态。至于泄漏,是的,我认为你会(如果你改变活动)。保持对应用程序的(非静态)引用会更容易。
答案 1 :(得分:0)
onDestroy
运行一次 - 如果有的话。直到那时你有泄漏。在onPause()
中取消注册。请注意,前Honeycomb onPause()
可能是最后一个运行的方法 - 并不是因为一个被杀死的进程带有它的类(以及它们的泄漏),它会对你的情况产生影响。或者我认为。我不知道是否可以在没有调用onDestroy的情况下杀死一个活动(不是在整个过程失败的情况下 - 那么它完全可能但是它也没有像我说的那样有所不同) - 我不这么认为
简而言之,只要您的活动处于活动状态(实例化),您的泄漏就会存在