2014-09-01 148 views
0

我在Android服務中啓動一個線程,當服務停止時(onDestroy方法運行)線程仍在運行。我想知道服務是否停止或嘗試在退出時停止它的線程,如果不是,我該如何停止它。線程在其父進程停止時是否會停止

+1

不明白,你想停止你的服務,當線程停止或反之亦然? – bhargavg 2014-09-01 06:45:42

+0

一旦服務將停止線程將自動停止,無需打擾自己 – Jeetendra 2014-09-01 06:54:01

+0

執行線程的點將獨立處理 – user2450263 2014-09-01 06:54:15

回答

1

對於您的情況,不會。因爲通常服務是而不是 process.It與其他組件,活動等和您的線程運行相同的過程。

要停止線程,您需要在onDestroy中設置一個標誌,指示線程應該自行終止。 並且在線程中,您應該檢查標誌是否定期設置。

+0

感謝您的回答。 – tang 2014-09-01 07:02:23

0

線程不會終止,除非您自己或通過退出條件殺死他。 如果殺死上層線程,下層線程將成爲守護進程。 這可以通過在構造函數中調用setDaemon(true);來禁用。

Service(){ 
    setDaemon(true); 
    } 

(更新)或由@suitianshi說:

boolean terminated = false; 

@Override 
public void run(){ 
    while (! terminated){ 
     System.out.println("Thread is running"); 
    }   
} 

public void terminate(){ 
    terminated = true; 
}