2012-01-19 78 views
0

當我嘗試打開一個按鈕按下一個新的活動我得到一個異常:Android的異常試圖打開一個新的活動 - 表面::鎖定失敗,已經鎖定

01-19 14:55:08.327: E/Surface(15454): Surface::lock failed, already locked 
01-19 14:55:08.327: E/SurfaceHolder(15454): Exception locking surface 
01-19 14:55:08.327: E/SurfaceHolder(15454): java.lang.IllegalArgumentException 

我有一個遊戲,吸引了在一個線程的表面視圖畫布,與主進程運行,我試圖打開一個新的對話框輸入,沒有任何工作,所以我只是試圖打開一個新的活動,將異常,我使用鎖定和解鎖,並很好地同步,我試圖停止線程,甚至放置幾個意見。 任何幫助是好的謝謝。

回答

0

我希望你的渲染線程在onPause()被調用後鎖定表面。不要這樣做。

在您的Activity的onPause()中,您應該告訴您的渲染線程等待(在畫布鎖定/解鎖之外),然後讓它再次在onResume()中運行。

這樣做的一個簡單方法是在onResume()中創建渲染線程,然後在onPause()中指示它應該退出(也許通過設置線程循環中讀取的布爾值),然後等待在從onPause()返回之前退出(通過Thread.join())。