0
我的服務正在執行onDestroy()
通過致電stopSelf()
引發。我在onDestroy()
中進行了更持久的清理操作(可以是10,30或90秒)。如果我的服務現在開始,會發生什麼?當onDestroy()正在執行時onStartCommand()會被調用嗎?
- Android會創建一個新的服務實例嗎?
- 將調用當前服務的
onStartCommand()
? - 發生了什麼?
我的服務正在執行onDestroy()
通過致電stopSelf()
引發。我在onDestroy()
中進行了更持久的清理操作(可以是10,30或90秒)。如果我的服務現在開始,會發生什麼?當onDestroy()正在執行時onStartCommand()會被調用嗎?
onStartCommand()
?onDestroy()
在UI線程(也稱爲主線程)上被調用。那麼onStartCommand()
。因此,在從onDestroy()
返回之前,不能調用其他框架方法 - 不僅對於此Service
而且對於在同一過程中運行的任何其他Service
。此外,任何其他組件(Activity
等)的框架回調都不會被調用。當然,在實踐中,如果真的在任何組件的任何生命週期方法中阻塞10秒或更多秒,幾乎肯定會看到「應用程序無響應」消息。
我明白了,我沒有想過。因此,我將在'onDestroy()'中啓動一個線程,稍後將會完成。我希望系統不會殺死這個進程(從我以前的經驗來看,它不會)。 – OneWorld 2014-11-25 08:56:33
@OneWorld的確是要走的路。看到這個 - http://stackoverflow.com/questions/9479311/performing-long-running-operation-in-ondestroy。但是請注意,在你的線程完成任務之前,你的進程仍然有可能被殺死。詳情請看這裏:http://developer.android.com/guide/components/processes-and-threads.html#Lifecycle – curioustechizen 2014-11-25 09:08:14