2016-07-22 93 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; 
      } 
     } 
} 
相關問題