2013-07-14 27 views
0
@Override 
    public void run() 
    { 
    Canvas canvas = null; // used for drawing    { 
    while (threadIsRunning) 
    { 
     try 
     { 
     canvas = surfaceHolder.lockCanvas(null); // line 1        

      synchronized(surfaceHolder)    // line 2 

       { //do something ..... 

       } 

      } 
     } 
     } 

據許多崗位和博客lockCanvas將在畫布上的鎖,這樣帆布多址是不可能的,是用來synchronized block以便在畫布上沒有其他線程 平局..lockCanvas和同步的Android

問題是,如果其他線程通過強制等待來阻止通過鎖定畫布創建畫布。 那麼什麼是需要同步塊爲,隨着受阻

+0

此方法的文檔從不談論線程。 lockCanvas()只能防止SurfaceView改變或破壞SurfaceHolder。 –

回答

-1

我覺得線程不能達到這個塊,如果lockCanvas無法獲得鎖定它只會返回null和將繼續執行。