java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap:报错解决

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);
    }


通过debug调试,bitmap是有值的,到另一个界面代码如图:

@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,就释放了,怀疑有问题,放在onDestroy()中释放,问题解决。

可能是bitmap设置需要时间,但是你马上释放可能就会有问题,所以最好放在界面销毁时去释放。。。

PS:希望可以帮到大家。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值