2015-04-01 82 views
0

創建Bitmap時,我有一個偶然發生的OutOfMemoryException的遊戲。自動放大與沒有放大的放大圖像的內存差​​異

對於一些資源,我只在drawable文件夾(MDPI)使用一個圖像。這意味着沒有單獨的圖像HDPI,XHDPIXXHDPI

當分辨率較高時,Android會自動調整它們的大小。

我的問題是:是否更有記憶效率,如果我把遊戲放在遊戲中,最初是爲每個單獨的分辨率放大圖像 - 例如,圖像華電國際,圖像XHDPI和需要在內存中轉換和重新調整的Bitmap緩解的Android,或者是它更好,更effiecent使用單一的形象只爲MDPI和Android做重新調整本身。

我認爲在這個方向上,因爲我不知道在Android內部需要多少內存以在創建位圖時重新縮放圖像,以及每種情況下位圖內存的大小。但它似乎是一個可能的選擇。

回答

1

在效率和性能方面,提供縮放圖像而不是讓Android爲您提供縮放圖像幾乎總是一個更好的主意。

有了這樣說:在Android-自動縮放而不是預縮放可以是更多的CPU昂貴,但使用較少的內存。除非在同一個會話中不更改圖像的比例,否則它不應該成爲問題。

1

你可以在drawable-nodpi中使用你的圖像,所以它們不會被不同的密度縮放。 當Android將圖像縮放到dencity電話時,手機正在使用內存,在您再次縮放圖像後,並且您使用的內存更多,並且會拋出OutOfMemoryException。

,你會放:

android:largeHeap="true" 

例如:

<application 
    android:icon="@drawable/icon" 
    android:theme="@style/TecnoblindsTHEME" 
    android:largeHeap="true" 
    tools:replace="android:icon,android:theme" 
    android:label="@string/app_name" 
> 

檢查顯示位圖優化:

http://developer.android.com/training/displaying-bitmaps/index.html