1
如果我有一個Android服務,其在onStartCommand
,有以下幾點:如果服務停止,後臺線程會發生什麼情況?
MyWidgetUpdater updater = new MyWidgetUpdater();
updater.updateWidgets(...);
的updater
在後臺線程中檢索數據,然後更新前臺線程上的微件(一個或多個)。如果服務在後臺處理完成之前停止(例如stopSelf()
)會發生什麼情況?這是否會導致窗口小部件有時不完成更新(因爲線程大概會被殺死)?如果是這樣,是否有一種設計模式可以知道您的所有小部件何時完成更新以及其安全停止服務?
感謝CommonsWare。要添加更多細節,使用「AsyncTask」啓動後臺線程。如果停止服務(啓動「AsyncTask」),「onPostExecute()」會成功執行嗎? –
是的。但是正如CommonsWare所指出的那樣,最好是在onPostExecute()的末尾使用IntentService或stopSelf()。 – pcans
@ChrisKnight:「如果服務(啓動AsyncTask)停止,onPostExecute()會成功執行嗎?」 - 也許。您的流程可以隨時終止,並且當您的服務被銷燬時*更有可能被終止。因此,我同意pcans:要麼使用'IntentService',要麼直到'onPostExecute()'結束時才調用'stopSelf()'。 – CommonsWare