安卓报错Canvas: trying to use a recycled bitmap android.graphics.Bitmap
问题出现描述:
在开发安卓应用涂鸦模块的时候,当对图片进行了涂鸦,然后保存涂鸦,此时点击保存按钮的时候快速点击。导致点击第一次是触发‘保存按钮’的点击事件,第二次是触发‘涂鸦’的事件。但是此时图片已经进行保存操作,系统开始回收Bitmap缓存资源,此时涂鸦事件相当于在已经被回收的Bitmap上添加涂鸦,导致报错。
问题代码:
public void onClick(View v) { mDoodle.save();
}
解决:
private Boolean mDisableAllClick = false;
public void onClick(View v) {// 全局禁用触摸事件mDisableAllClick = true;mDoodle.save();
}@Override
public boolean dispatchTouchEvent(MotionEvent ev) {if (mDisableAllClick) {// 重写事件分发,禁用全局触摸return mDisableAllClick;}return super.dispatchTouchEvent(ev);
}
了解跟多关于事件分发