安卓报错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);
}
了解跟多关于事件分发
本文介绍了一种在Android应用程序中解决涂鸦模块错误的方法。该错误发生在尝试使用已回收的Bitmap进行涂鸦操作时。文章提供了一个具体的解决方案,通过在保存涂鸦后暂时禁用所有触摸事件来避免重复涂鸦导致的错误。
674

被折叠的 条评论
为什么被折叠?



