2011-02-14 72 views
2

我有一個應用程序,它可以運行大量(~100)位圖 - 即音樂封面藝術。位圖以兩種方式使用 - 作爲大背景和小(50dip)圖標。 將兩種尺寸預加載並緩存爲單獨的位圖是否合理? 我已經實現了這兩種方法(使用大的位圖作爲圖標|緩存兩種尺寸),但我看不到實際的性能差異。 這種情況的最佳做法是什麼?Android位圖緩存

回答

7

在緩存兩個圖像大小時沒有意義,內存太多。

最好的做法是(以我愚見):

  1. 確保您的緩存使用SoftReferences,這種方式可以確保你沒有用完的內存,並且可以隨時加載新的位圖在損失舊的「費用」上。
  2. 使用Canvas的drawBitmap方法繪製較小的大尺寸位圖。
  3. 請確保您防範OutOfMemoryError,並注意它是Throwable的子類,而不是Exception的子類,因此catch(Exception e)子句不會捕獲它。
+0

感謝您的SoftReference!這是我錯過的重要一點。 – 2011-02-14 16:45:07

1

就個人而言,我會盡我所能來限制我在內存中保留的位圖數量。如果圖標看起來像較大位圖的縮小副本看起來不錯,我會贊成這種方法。這可能是一個有偏見的觀點,因爲我的個人經驗,但我使用Android的經驗中遇到的最大問題是使用Bitmap時內存不足