1
我有一個頁面,我從圖庫中顯示圖像,然後我有下一頁按鈕移動到該按鈕上的下一個活動,我使用clearBitmap(); 釋放它所使用的內存。
private Bitmap bitmap;
oncreate()
{
_image = (ImageView)findViewById(R.id.MyImage);
_path = getRealPathFromURI(_data.getData());
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
bitmap = BitmapFactory.decodeFile(_path, options);
_image.setImageBitmap(bitmap);
next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Intent myIntent = new Intent(UploadImageOnly.this, ImageGallery.class);
startActivity(myIntent);
clearBitmap();
}
這給了我錯誤 logcat的
08-13 12:07:07.649: ERROR/AndroidRuntime(753): Uncaught handler: thread main exiting due to uncaught exception
08-13 12:07:07.869: ERROR/AndroidRuntime(753): java.lang.RuntimeException: Canvas: trying to use a recycled bitmap [email protected]
08-13 12:07:07.869: ERROR/AndroidRuntime(753): at android.graphics.Canvas.throwIfRecycled(Canvas.java:955)
08-13 12:07:07.869: ERROR/AndroidRuntime(753): at android.graphics.Canvas.drawBitmap(Canvas.java:1044)
08-13 12:07:07.869: ERROR/AndroidRuntime(753): at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:323)
08-13 12:07:07.869: ERROR/AndroidRuntime(753): at android.widget.ImageView.onDraw(ImageView.java:845)
08-13 12:07:07.869: ERROR/AndroidRuntime(753): at android.view.View.draw(View.java:6535)
代碼
public void clearBitmap() {
try{
if(bitmap!=null && !bitmap.isRecycled()){
bitmap.recycle();
bitmap = null;
}
}catch(Throwable e){
System.out.println(e.getMessage());
e.printStackTrace();
}
System.gc();
}
好吧,如果我不這樣開放不同的圖像從畫廊一遍又一遍......我崩潰了內存異常。所以在這種情況下釋放內存是必要的。 – UMAR 2010-08-13 07:10:18
然後你保持對你的位圖的引用,他們沒有被收回。 – Qberticus 2010-08-13 07:27:58
那麼殺死它們的程序是什麼? – UMAR 2010-08-13 07:39:03