【发布时间】:2016-01-13 05:46:13
【问题描述】:
基本上,我有一个主要活动,即网格视图有图像,当用户单击图像时,它会显示相应的详细活动。一切工作正常且功能正常,但它将图像保存在内存中,我正在尝试使用基于以下link 的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);
}
按下返回按钮
@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: Canvas: 试图使用回收的位图 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:at android.view.View.draw(View.java:14506)
【问题讨论】:
标签: android