可能重複:
OutOfMemory Exception when handling imagesAndroid的 - 的AsyncTask與位圖的工作 - 的OutOfMemoryError
我有一個的AsyncTask內的位圖的創作,這是這樣的:
private WeakReference<Bitmap> myBitmap;
private WeakReference<Bitmap> endResultBitmap;
private ImageView imv;
...
private class SendBitmap extends AsyncTask<Integer, Void, Bitmap> {
public SendBitmap(Bitmap bitmap) {
myBitmap = new WeakReference<Bitmap>(bitmap);
}
@Override
protected Bitmap doInBackground(Integer... params) {
Bitmap bm = null;
bm = getBitmapFromNet(params[0]);
return bm;
}
然後我想創建上接收到的位圖會出現兩次(旁邊另外一個)位圖
protected void onPostExecute(Bitmap result) {
endResultBitmap = new WeakReference<Bitmap>(Bitmap.createBitmap(result.getWidth() * 2, result.getHeight(), result.getConf()));
Canvas canvas = new Canvas(endResultBitmap.get());
canvas.drawBitmap(result, 0, 0, null);
canvas.drawBitmap(result, result.getWidth(), 0, null);
imv.setImageBitmap(endResultBitmap);
}
然後我有我的onCancelled()方法:
@Override
protected void onCancelled(Bitmap result) {
if(endResultBitmap!=null) {
endResultBitmap.recycle();
endResultBitmap = null;
}
}
事情如果我執行這個AsyncTask幾次,堆會瘋狂增長。 我執行的AsyncTask當按下一個按鈕,但一開始我做的事:
public void onClicked(View v) {
if(asyncTaskInstance != null)
asyncTaskInstance.cancel();
asynctaskInstance.execute(2);
}
但同樣,堆成長,如瘋了,在某些時候它會與OutOfMemoryError錯誤崩潰。
有什麼想法?我的任務設計有錯嗎?
什麼是你的位圖(result.height()??)的維度? – Shash316
〜2000 - 我需要更好的quallity :( –
什麼是** imv **?你在哪裏存儲你加載的位圖?ContentProvider?內存? – user802421