java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@48c758e8:报错解决
业务是这样的,调用系统拍照获取图片,跳转另一个界面,结果拍照返回直接崩溃,不多说,直接上代码:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (resultCode) {
case RESULT_OK:
int degree;
switch (requestCode) {
case 1://拍照
bitmap = ImageHelpUtil.readBitmapAutoSize(Environment.getExternalStorageDirectory() + "/image.jpg", 480, 480);
if (null != bitmap) {
if (mStrFilePath != null) {
File file = new File(mStrFilePath);
if (file.exists()) {
file.delete();
getContentResolver().delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, MediaStore.Images.Media.DATA + "=?", new String[]{mStrFilePath});
}
}
mStrFilePath = ImageHelpUtil.saveByGUID5(bitmap, FieldSignActivity.this);
mStrFileId = new GuidCreatorUtil().toString();
Intent intent = new Intent();
intent.setClass(FieldSignActivity.this, ClipMainActivity.class);
intent.putExtra("comefrom", 1);
intent.putExtra("photo", (Serializable) mStrFilePath);
intent.putExtra("photoid", mStrFileId);
intent.putExtra("Store", mCurrentStore);
startActivityForResult(intent, 9);
}
break;
}
}
Control.getControl().getStoreService().getStoreFromServer(
this, mHandlerGetStoreList, SituationType.Situation_NotAssign,
(float) latitude, (float) longitude);
// animationDrawable.stop();
// mImgLoading.setVisibility(View.GONE);
}
@Override
public void initData() {
EventBus.getDefault().register(this);
intent = this.getIntent();
mPhotoInfo = (String) intent.getSerializableExtra("photo");
int come = intent.getIntExtra("comefrom", 0);
mStrFileId = intent.getStringExtra("photoid");
mCurrentStore = (StoreDetailInfo)intent.getSerializableExtra("Store");
if (come == 1) {
mRelaLayoutBottom.setVisibility(View.VISIBLE);
mTxtSure.setVisibility(View.GONE);
mTxtBack.setVisibility(View.GONE);
mProgress = BaseHelper.showProgress(ClipMainActivity.this, null, "", false, false);
mLocationClient = new AMapLocationClient(getApplicationContext());
getGps();
} else {
mRelaLayoutBottom.setVisibility(View.GONE);
mTxtSure.setVisibility(View.VISIBLE);
mTxtBack.setVisibility(View.VISIBLE);
}
mbitmap = getLoacalBitmap(mPhotoInfo);
ClipImageLayout.mZoomImageView.setImageBitmap(mbitmap);
BitmapUtil.recycleBitmap(mbitmap);
}
可能是bitmap设置需要时间,但是你马上释放可能就会有问题,所以最好放在界面销毁时去释放。。。
PS:希望可以帮到大家。。。