2012-09-24 50 views
1

最近在寫遊戲時遇到了問題。在我的比賽中,我使用SurfaceView,我用while(true)作爲條件。按下主頁按鈕後,程序退出,我看到日誌。但我發現循環While(true)仍在運行。爲什麼在Activity停止後循環仍然運行?有誰能幫忙併告訴我原因。 Thanx如何在Android中停止SurfaceView?

回答

0

我這樣做在遊戲中我是現在的工作:

//Makes the thread draw until the state of running is set to false 
    while(this.running) 
    { 
      //Draw 
    } 
    this.thread.interrupt(); 

在的onPause:

//Stop the thread that is responible for the drawing. 
this.worker.running = false; 

在的onResume:

//Creates a new thread instance which sets this.running to true and calls the drawing method again 
this.worker.restart(); 
+0

這就是方法:)thanx – Winnie

1

更好的解決方案可能是設置一個bool來保存應用程序的狀態,然後在遊戲退出時將其設置爲false。

while(appActive) 
    //do game logic 

編輯:感謝Braj和Fildor在的onPause()事件處理反饋

添加一行

appActive = false; 

((注:我沒有做任何Android開發,這純粹是一個理論上的迴應))

+0

雖然它是正確的。在onPause()中執行它,因爲這是唯一的回調函數,保證被調用。 – Fildor

+0

我工作的另一種方式,但謝謝你理論上的迴應,+ 1 – Winnie