2016-07-22 97 views
0

我有下面的代码:的Android lockCanvas()返回帆布一台设备上,但在另一个返回null

public void messageReceived(String message) { 
    ... 
    ... 
    synchronized (getHolder()) { 
     if(isCreated) { 
      Canvas canvas = getHolder().lockCanvas(); 
      if (canvas != null) { 
        draw(canvas); 
        getHolder().unlockCanvasAndPost(canvas); 
      } 
     } 
    } 
    ... 
    ... 
} 

问题是这样的:在我的HTC Desire(安卓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

我想通了,我做了画布公共静态属性,它的作品!

if(isCreated) { 
    synchronized (getHolder()) { 
     if(canvas == null) 
      canvas = getHolder().lockCanvas(); 
      if (canvas != null) { 
       draw(canvas); 
       getHolder().unlockCanvasAndPost(canvas); 
       canvas = null; 
      } 
     } 
} 
相关问题