5

ここでは、経験豊富な意見を聞きたい初心者のメモリ管理の観察をいくつか示します。

xml レイアウトで android:backgound="@drawable/xyz" を設定すると、アプリでメモリが失われるようです。OOM エラーが発生するまで、それぞれのアクティビティが積み重なっていきます。これは、デバイスの向きを回転させた場合に特に当てはまります。

ただし、同じリソースを setBackgoundResource() でロードし、コールバックをクリアしてバックグラウンド参照を null に設定すると、リークはまったくありません。

つまり、最初に onCreate()

    mMainLayout.setBackgroundResource(R.drawable.background_general_android);

そして onDestroy() で

mMainLayout.getBackground().setCallback(null);
mMainLayout.setBackgroundDrawable(null);

これは大まかに正しいですか、それとも何か重要なものが欠けていますか?

4

1 に答える 1

1

これは、たとえば、ドローアブルのコピーを静的キャッシュに保持している場合にのみ発生します。また、アクティビティをリークしている可能性があり、drawables を null に設定すると、問題が少し長く隠れてしまいます。MAT のようなツールを使用して、ヒープの内容を検査し、何が起こっているかを把握する必要があります。

于 2012-05-06T19:30:45.957 に答える