0
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();
    }

}

我可以问一个非常菜鸟的问题吗?
活动的静态链接总是会导致内存泄漏吗?即使我在销毁时将其“无效”?

编辑: 如果即使您在销毁时将其“null”也存在内存泄漏,您能解释一下原因吗?
我有几年的 Java 经验,但我不明白为什么销毁时的“null”不会释放内存。

4

2 回答 2

1

如果您在销毁时将其设为空,则保持其静态是没有意义的。至于泄漏,是的,我想你会的(如果你改变活动)。只保留对应用程序的(非静态)引用会更容易。

于 2012-05-14T14:54:23.257 回答
0

onDestroy运行一次 - 如果有的话。直到那时你有你的泄漏。在 中注销onPause()。请注意,pre-HoneycombonPause()可能是最后一个运行的方法 - 并不是说​​它对您的情况有影响,因为被杀死的进程会使用它的类(以及它们的泄漏)。或者我认为。我不知道是否可以在不调用 onDestroy 的情况下杀死一个活动(不是在整个过程失败的情况下——那么这是完全有可能的,但正如我所说的那样也没有区别)——我不这么认为.

简而言之,只要您的活动还活着(实例化),您的泄漏就存在

于 2013-11-25T01:17:38.583 回答