我有以下代码:
public void messageReceived(String message) {
...
...
synchronized (getHolder()) {
if(isCreated) {
Canvas canvas = getHolder().lockCanvas();
if (canvas != null) {
draw(canvas);
getHolder().unlockCanvasAndPost(canvas);
}
}
}
...
...
}
问题在于:在我的HTC Desire(Android 4.1.2)上,方法getHolder().lockCanvas()
返回画布,然后我用它来绘制画面上的东西。但是在我的朋友智能手机(Android 4.2.2)上,它返回null,因此我无法在其上绘制。任何想法?
修改 为了确保我已经改变了一些代码:
synchronized (getHolder()) {
if(isCreated && !isLocked) {
Canvas canvas = getHolder().lockCanvas();
isLocked = true;
if (canvas != null) {
draw(canvas);
getHolder().unlockCanvasAndPost(canvas);
isLocked = false;
}
}
}
isCreated和isLocked是公共静态布尔值。
答案 0 :(得分:0)
我弄清楚了,我制作了canvas public static属性并且它可以工作!!
if(isCreated) {
synchronized (getHolder()) {
if(canvas == null)
canvas = getHolder().lockCanvas();
if (canvas != null) {
draw(canvas);
getHolder().unlockCanvasAndPost(canvas);
canvas = null;
}
}
}