2012-03-19 16 views
6

あなたがそうのようなリソースからビットマップをロードします。Androidリソース:リソースからロードされたビットマップはどのようにメモリが賢く処理されますか?

iv.setImageResource(R.drawable.image); 
  1. ビットマップはScaletypeにより品質が低下した場合、それはまだ全体の元のビットマップを保存しないが?あなたが複数のImageViewに同じリソースIDをロードすると、メモリには1つのビットマップしか保存されていませんか?はい、私はそう思っています。Scaletypeをオンザフライで変えることができ、完全な品質を望んでいるからです。
  2. onDestroyでビュー階層をスキャンし、これらのビットマップを(ImageViewからBitmapDrawableを抽出して)手動でリサイクルすることをお勧めしますか?これがシステムによって間に合っていることを確認できますか?

答えて

0
  1. はい、完全な品質を維持します。
  2. いいえ、単一のオブジェクトを維持します。
  3. これはシステムによって行われます。気にする必要はありません。しかし、GCを呼び出すためのデータでバッファがいっぱいになるまで待ちます。バッファに不要なデータがいっぱいになると、オブジェクトはメモリから削除されます。あなたがまだ望むなら、あなたは世話をすることができます。
+0

ええ、それは私が考えたものです。私はクラッシュを防ぐためにいくつかのデバイスで手動GCを行う必要があることを知ります。私はまだこれがこれらのデバイスに固有のものであるのか、私が根本的に何か間違っているのかどうかはまだ分かりません。私は別のSOのポストのために何かを推測する:-)ありがとう –

関連する問題