2

私の APP では、Activity-A が別の Activity-B をトリガーします。アクティビティ B は、別のアクティビティ C をトリガーします。ここで、コントロールはアクティビティ B を介してアクティビティ C からアクティビティ A に戻ります。Activity-A は、ビットマップ イメージを使用して、Canvas の背景として描画します。

質問:

  1. Activity-A から B に移動するとき、onPause() メソッドでビットマップ変数 (例: background.recycle()) をリサイクルする必要がありますか?

  2. onPause() メソッドでビットマップ変数をリサイクルしたとします。これは、OOM エラーを回避するための適切なアプローチでしょうか (Activity-A に戻ったときに画像を再描画する必要があることに注意してください)。

4

2 に答える 2

0

ビットマップが不要になるたびに、それをリサイクルします。場合によっては強制終了を回避するために、少なくとも if メソッドを使用します。

if (null != bmp){
 bmp.recycle();
}

アクティビティ間でビットマップを送信する代わりに、インテントを使用してファイル名を取得し、このようにアクティビティに渡すことをお勧めします。すべてのアクティビティでビットマップを再描画することを避け、確実に OOM を引き起こします。

于 2013-07-07T18:23:50.253 に答える