2017-05-23 71 views
0

我試圖在UI上應用幾張圖片,而我用bitmap來實現這一點,因爲我沒有任何空間可以使用簡單的setImageResource。 問題說失敗分配。未能使用位圖分配 - Android

java.lang.OutOfMemoryError: Failed to allocate a 93600012 byte allocation with 16765312 free bytes and 70MB until OOM

如果你能幫我解決這個問題,我會很高興。

int imgResource = item.getIcon(); // for example imgResource = R.drawable.test 
Drawable drawable = context.getResources().getDrawable(imgResource); //Here I get the error 
Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap(); 
holder.iv.setImageBitmap(bitmap); 

謝謝!

+0

多大的圖像? (寬x高) –

+0

這將幫助你https://developer.android.com/topic/performance/graphics/load-bitmap.html – Pavan

+0

@SteveSmith這段代碼是函數的一部分,該函數獲取25張圖片和每張圖片是不同的。 – japi99

回答

0

試試這種方法。添加android:largeHeap="true"

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:largeHeap="true" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 

使用這種方法,並通過上下文和圖像文件名:

public Bitmap getAssetImage(Context context, String filename) throws IOException { 
    AssetManager assets = context.getResources().getAssets(); 
    InputStream buffer = new BufferedInputStream((assets.open("drawable/" + filename + ".png"))); 
    Bitmap bitmap = BitmapFactory.decodeStream(buffer); 
    return bitmap; 
    // return new BitmapDrawable(context.getResources(), bitmap); 
} 
+0

我嘗試過,蝙蝠這並不是處理這個問題的「最佳」答案,因爲它仍然充滿了所有的記憶。 – japi99

+0

嘗試更新代碼 –

+0

我嘗試過但現在所有的圖像都是白色的。你知道爲什麼嗎 ? – japi99