2015-01-08 68 views
-1

我搜索了但沒有找到解決方案。 我有一個無限的遊戲循環在一個線程中運行。它非常長,所以當我退出我的應用程序並使用while(condition)時,它將繼續分別在Android中啓動另一個應用程序。 我該如何阻止它? 如果線程有中斷信號,我必須檢查每種方法嗎?如何突破長無限循環

+7

我對這個問題的答案真的很感興趣,但對於短暫的無限循環。 – Emmanuel

+0

在退出點處,放入System.exit(0)。 –

回答

2

如果你的循環運行在另一個線程上,你可以創建你自己的自定義線程。簡單的添加一個停止方法,你就完成了。

的想法:

private boolean run = true; 

public class MyThread extends Thread{ 

    public void stopThread(){ 
     run = false; 
    } 

    @Override 
    public void run(){ 
     while(run){ 
      //large code block 
      if(!run)break; //to make sure the thread will stop in time 
      //another large code block 
     } 
    } 
} 

只需調用myThread.stopThread()幾乎立即停止。

你也可以使用ASyncTask,它有一個方法cancel(boolean)來立即停止它。

+0

但如果我有多個線程運行,我有一個線程啓動另一個匿名線程,我怎麼能阻止他們所有人在一起? – user3642735

+0

同樣的答案,因爲那並不重要 –

+0

這與Thread.stop()例如在onPause()中,但是如果我使用這個運行標誌,我也可以用這種方式解決它,但是如果我只想關閉活動,如果某些信息丟失,無所謂。順便說一句,我讀了asynctask應該只用於短時間,而不是像這個gameloop在一個線程? – user3642735