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の経験が数年ありますが、destroyの「null」がメモリを解放しない理由を理解できません。

4

2 に答える 2

1

破棄時にnullにした場合、静的に保つ意味はありません。リークに関しては、はい、そうだと思います(活動を変更した場合)。アプリケーションへの(静的ではない)参照を保持する方が簡単です。

于 2012-05-14T14:54:23.257 に答える
0

onDestroy一度実行します-もしあれば。それまで、あなたはあなたの漏れを持っています。で登録を解除しonPause()ます。pre-HoneycombonPause()が実行される最後のメソッドである可能性があることに注意してください。強制終了されるプロセスがそのクラス(およびそれらのリーク)を取得するため、ケースに違いが生じるわけではありません。またはそう思います。onDestroyを呼び出さずにアクティビティを強制終了できるかどうかはわかりません(プロセス全体がダウンした場合ではありません-完全に可能ですが、私が言ったように違いはありません)-私はそうは思いませんが。

要するに、あなたの活動が生きている(インスタンス化されている)限り、あなたのリークは存在します

于 2013-11-25T01:17:38.583 に答える