Android:如何避免unlockCanvasAndPost方法上的错误?
请任何人帮我解释一下 如何正确调用holder.unlockCanvasAndPost(canvas)方法以避免出现类似“Surface:unlockCanvasAndPost失败,没有锁定的缓冲区”之类的错误 我是说,有没有办法检查画布以前是否被锁定过 目前,我有:Android:如何避免unlockCanvasAndPost方法上的错误?,android,android-canvas,surfaceholder,Android,Android Canvas,Surfaceholder,请任何人帮我解释一下 如何正确调用holder.unlockCanvasAndPost(canvas)方法以避免出现类似“Surface:unlockCanvasAndPost失败,没有锁定的缓冲区”之类的错误 我是说,有没有办法检查画布以前是否被锁定过 目前,我有: try{ _surfaceHolder.unlockCanvasAndPost(canvasToUnlock); } catch(Throwable t){ } 但我想这是不合适的 提前谢谢 在@njzk2帖子上回答: 对。但在
try{
_surfaceHolder.unlockCanvasAndPost(canvasToUnlock);
}
catch(Throwable t){ }
但我想这是不合适的
提前谢谢
在@njzk2帖子上回答:
对。但在我的例子中,我必须对处理程序说,当画布应该被锁定和解锁时,我用于从不同的线程解锁画布。我的意思是:
class MyObject extends Object{
private Canvas canvas = null;
private SurfaceHolder holder = null;
MyObject(SurfaceHolder sh, Canvas cv){
canvas = cv;
holder= sh;
}
public SurfaceHolder getHolder() {return holder;}
public Canvas getCanvas() {return canvas;}
};
private final Handler mHandler = new Handler(){
public void handleMessage(android.os.Message msg){
MyObject myObject= (MyObject)msg.obj;
switch(msg.what){
case 1:
Canvas c = myObject.getCanvas();
c = myObject.getHolder().lockCanvas();
break;
case 2:
myObject.getHolder().unlockCanvasAndPost(myObject.getCanvas());
break;
}
};
};
例如,当使用当前和下一个图像生成淡入/淡出效果时,我可以实现从主线程双击以立即更改图像,有时会在画布解锁之前强制停止循环
因此,我需要通过知道它之前是否已解锁来防止意外锁定,反之亦然
再次感谢您的回复。通常,它位于以
canvas.lock
开头的块的末尾,因此您知道它已被锁定。@njzk2我不知道如何插入带有此注释的复合答案,所以我只是用它更新了我的帖子。