我在活動中創建了一個線程。起初,我認爲在Activity上調用onDestroy()
時,線程也會被終止。但是我錯了。線程仍然繼續運行。我應該何時取消/殺死一個線程?
所以我決定取消onDestroy()
方法中的線程。一切正常。
但是有1個問題:onDestroy()
不保證被調用。例如:Activity被操作系統突然中止。
那麼在這種情況下最好的做法是什麼?謝謝。
我在活動中創建了一個線程。起初,我認爲在Activity上調用onDestroy()
時,線程也會被終止。但是我錯了。線程仍然繼續運行。我應該何時取消/殺死一個線程?
所以我決定取消onDestroy()
方法中的線程。一切正常。
但是有1個問題:onDestroy()
不保證被調用。例如:Activity被操作系統突然中止。
那麼在這種情況下最好的做法是什麼?謝謝。
你應該做一切有關清理onPause()。你是正確的,onDestroy()不會總是被調用,但onPause()總是被調用時,活動移動到後臺或被殺害。但要小心使這個方法中的代碼真的很輕量級,因爲在這個方法返回之前,一個活動不能進入後臺。
我提議把Thread
殺害Application
onTerminate
方法
public class MyApplication extends Application
{
MyThread myThread;
@Override
public void onCreate()
{
super.onCreate();
myThread=new MyThread();
myThread.start();
}
@Override
public void onTerminate()
{
super.onTerminate();
myThread.interrupt();
}
}
確保在AndroidManifest.xml
我也想過它宣佈所有MyApplication,但如果)活動的的onPause(簡稱只是因爲在它上面還有另一個Activity,如果線程正在下載某些內容,取消該線程是沒有意義的。 – namanhams 2011-06-04 08:18:09
你什麼時候需要準確地停止線程?如果您希望下載在您的活動從屏幕上消失後繼續運行,您可能需要在服務中下載內容。如果你正在做一些後臺任務,你不應該依賴活動狀態。 – Malcolm 2011-06-04 11:51:00