2012-12-27 47 views
1

對於我的應用程序,我需要加載一個有時可能非常大的位圖。即使在像S2這樣的設備上,我也會遇到OutOfMemory錯誤。我四處搜索,發現我需要回收位圖。Android pre-honeycomb位圖管理

以前我用BitmapFactory加載位圖,創建一個新的縮放位圖,並在一行中創建一個bitmapdrawable。通過這樣做,我將兩個位圖加載到內存中?我應該創建初始位圖,然後在創建縮放位圖後回收它嗎?

如果活動將頻繁啓動,我應該將位圖一次加載到靜態字段還是應該每次都回收並重新創建?

謝謝

回答

0

將過程分成多個步驟。如果您要根據可用的屏幕空間測量位圖,然後加載縮放的位圖,則可以使用BitmapFactory.Options.inJustDecodeBounds在不將位圖加載到內存中的情況下執行第一步。這會給你一個沒有像素數據但具有寬度和高度屬性的Bitmap對象。然後使用它來使用BitmapFactory.Options.inSampleSize解碼縮放的位圖。

谷歌這些條款,你會發現噸這樣做的示例代碼。是的,當你完成一個位圖時,不要忘記回收。

https://www.google.com/#q=BitmapFactory+Options+inJustDecodeBounds+inSampleSize