0

ドローアブルをリリースし、アクティビティでそのライフサイクルを管理する適切な方法は何ですか?メモリ関連のクラッシュが発生したため、ビットマップをクリアしようとしています。

そうです:

private static bitmap;

    public void onResume() {

            view.setBackgroundDrawable( new BitmapDrawable(getResources(),bitmap));

    }

    public void onPause() {
            view.setBackgroundDrawable(null); // What is the best way to do this?
            bitmap.recycle();
            bitmap=null;

    }
4

1 に答える 1

1

これが正しい方法です。ただし、さらに微調整を加えることもできます。

  1. ビットマップをnullに設定しましたが、VMガベージコレクションは、既にイメージをリロードしようとした場合にのみトリガーされる可能性があります。したがって、onPauseでは、次を使用System.gc()して、GCに必要であることを通知できます。しかし、それが来ることは保証されていません。

  2. API 14+を使用すると、本当に必要な場合にのみandroid:largeHeap="true"XMLで使用できます。これにより、アプリで許可されるヒープのサイズが大きくなります。

  3. あなたは本当にその大きな写真が必要ですか?それらを小さくして、密度に依存するコーディングを使用してください。ロードする前に縮小してみてください...

于 2013-03-22T18:08:50.300 に答える