2013-07-25 52 views
1

我得到一個場景,我必須在ArrayListBitmapDrawable)中存儲一些圖像。 當位圖出現時,我會考慮內存問題,如OutOfMemoryArrayListDrawable有什麼區別?或者它會是BitmapArrayList? 我應該使用什麼?Drawable或ArrayList的位圖的ArrayList?

+1

http://stackoverflow.com/questions/4570929/drawable-advantage-over-bitmap-for-memory-in-android – KOTIOS

回答

3

這是一個有趣的問題...概括我的答案,因爲我不知道爲什麼你需要使用/BitmapList

說實話,因爲我不會用他們都沒有:

  1. 位圖:這些對象佔用大量的內存和存儲這些內存可以肯定的,如果你不是有害遲早太小心了。例如:也許你想通過Intent將該列表發送到不同的組件。如果你這樣做,並且初始列表沒有被銷燬,你將進入一個案例,你將內存數量加倍,因爲Bitmaps將被反序列化爲目標組件端的新對象。
  2. Drawables:a BitmapDrawable保留對它的位圖的引用,所以我沒有看到它提供了比Bitmap本身更多的好處。您可能會「忘記」清除Drawables的列表,並且這種方式會導致內存泄露Bitmaps。我不認爲創建一個Drawable是耗費時間或資源消耗以使其值得高速緩存。

要添加更多的,你必須覆蓋所有在您的活動被破壞,重新創建,這樣你就不會泄漏列表中的情況。個人而言,對於從網絡下載的位圖,我寧願使用LRUCache來存儲Bitmap,將鍵分配給它們並將它們備份到磁盤緩存。我會爲每個鍵分配鍵,並且只能使用這些鍵。有像DiskLRUCache,picassonovoda-ImageLoader這樣的圖書館可以幫助你很多。

同樣適用於資源位圖:僅使用密鑰工作 - 無需緩存它們。資源圖片應足夠小,以滿足您的設備尺寸和密度,並且足夠大以滿足您的需求。

這只是我的意見了......