2012-03-19 73 views
6

當加載從資源的位圖,如下所示:Android資源:如何從資源中加載位圖來處理內存?

iv.setImageResource(R.drawable.image); 
  1. 如果位圖是由Scaletype質量下降,它仍然保存了整個原始位圖? (我猜是的,因爲可以隨時更改Scaletype,並且您希望獲得完整的質量。)
  2. 如果您將相同的資源ID加載到多個ImageView中,是否只有一個位圖存儲在內存中?
  3. 在onDestroy中掃描視圖層次結構並手動回收這些位圖(通過從ImageView中提取BitmapDrawable)或者我可以確定這是由系統及時完成的​​嗎?

回答

0
  1. 是的,它會保持完整的質量。
  2. 不,它會保持單個對象。
  3. 它將由系統完成。不需要打擾。但是,它等到某個緩衝區填滿了調用GC的數據。一旦緩衝區填充了不需要的數據,那麼一次將從內存中移除對象。如果你仍然想要,你可以保重。
+0

是的,這就是我的想法。我發現我需要在某些設備上進行手動GC以防止崩潰。我仍然不確定這是否僅僅是這些設備所固有的,或者我是否正在做一些根本性錯誤。我猜想另一個SO帖子:-)謝謝 – 2012-03-19 18:57:54