bitmap.recycle();
来释放内存,基于以下链接,通过实现该方法,内存不足问题已经得到了一些修复。但是,在以下情况下仍然会崩溃。
假设用户单击图像1,然后详细信息活动出现,然后单击“返回”按钮并再次单击相同的图像,则在打开详细信息活动时会崩溃。但是,如果用户单击不同的图像,则不会崩溃。
ImageView初始化
@Override
protected void onResume() {
super.onResume();
productImageView = (NetworkImageView) findViewById(R.id.detailImage);
ImageLoader imageLoader = CustomVolleyRequest.getInstance(this.getApplicationContext())
.getImageLoader();
imageLoader.get(url, ImageLoader.getImageListener(productImageView,
R.drawable.image, android.R.drawable
.ic_dialog_alert));
productImageView.setImageUrl(url, imageLoader);
}
返回按钮被按下
(涉及IT技术)@Override
public void onBackPressed() {
Intent intent = new Intent(ProductDetailActivity.this,MainActivity.class);
ProductDetailActivity.this.startActivity(intent);
this.finish();
return;
}
@Override
public void onDestroy() {
super.onDestroy();
Drawable drawable = productImageView.getDrawable();
if (drawable instanceof BitmapDrawable) {
BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
Bitmap bitmap = bitmapDrawable.getBitmap();
if (bitmap != null && !bitmap.isRecycled()) {
bitmap.recycle();
bitmap = null;
}
}
System.gc();
}
这里是崩溃报告。
java.lang.RuntimeException: 画布:尝试使用已回收的位图 android.graphics.Bitmap@42524248 E/AndroidRuntime: 在 android.graphics.Canvas.throwIfCannotDraw(Canvas.java:1084) E/AndroidRuntime: 在 android.view.GLES20Canvas.drawBitmap(GLES20Canvas.java:844) E/AndroidRuntime: 在 android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:490) E/AndroidRuntime: 在 android.widget.ImageView.onDraw(ImageView.java:1037) E/AndroidRuntime: 在 android.view.View.draw(View.java:14506)