2012-02-03 97 views
1

我有一個長期運行線程,我在應用程序啓動時啓動:長時間運行的線程+生命週期

public class MyHelper extends Thread { 
    private AtomicBoolean mRun; 
    public void run() { 
     while (mRun.get()) { 
      ... 
     } 
    } 
} 

public class App extends Application { 
    private MyHelper mHelper; 

    public void onCreate() { 
     mHelper = new MyHelper(); 
     mHelper.start(); 
    } 
} 

我們沒有得到任何的Android雖然「應用程序終止」信號,因此是上述保持我應用程序永遠在後臺運行?我不知道什麼時候關閉線。

我不知道用戶是否彈出堆棧中的最後一個活動(通過點擊後退按鈕),即使Thread仍處於等待狀態,我的Application實例是否會被銷燬?

感謝

+0

看看這裏: http://stackoverflow.com/questions/680180/where-to-stop-destroy-threads-in-android-service-class – AlexS 2012-02-03 19:51:32

+0

良好的聯繫,我們仍然有問題,我們不會當應用程序想要「終止」時不會發出信號,因此無法知道要關閉我們的線程。一位用戶建議設置Thread.setDaemon(true),看起來這是我能做的唯一的事情,但看起來有點冒失。幸運的是,當應用程序有後臺時,我們沒有在線程中做任何工作,但我擔心操作系統無法殺死該應用程序,因爲該線程已暫停,並且充當應用程序應該保持活動狀態的信號? – user291701 2012-02-03 21:25:31

回答

0

來解決這個問題,你可以調用了Thread.interrupt()在你的OnDestroy()方法。

我注意到你的活動可能會被破壞,但不一定是你的上下文。

+0

Application類沒有onDestroy()方法。 – user291701 2012-02-03 20:56:09

+0

好點與活動混淆 – user1159819 2012-02-04 00:29:23