2012-09-28 104 views
2

我有具有IntentService提供背景處理的應用 - 特別是它從網並將其存儲在SQLite數據庫獲取數據。 我的活動使用Context.startService()請求服務更新數據,並且服務在更新完成時發送本地廣播消息。在活動使用它之前,IntentService可能會被殺死嗎?

IntentService使用線程池來完成這項工作 - 主要是爲了在請求完成之前打開一個新的Activity,因此不同資源的新請求不會阻止等待前一個完成。

這一切都正常工作,但爲了防止多個同時請求相同的資源,我在活動中設置了一個標誌,它在發送請求後停止發送新的請求,直到它從服務。

現在,如果IntentService在操作過程中被關閉,它將永遠不會發送DONE消息,並且Activity永遠不會知道請求未完成,並且不會重新請求資源。這可能嗎?如果發生這種情況,是否有任何方法可以通知活動?

回答

3

這可能嗎?

只要你捕捉所有可能的未處理的異常,沒有。組件並不是單獨被殺死的,比如說回收內存 - 這是在逐個進程的基礎上完成的。

+0

謝謝!我沒有意識到只有整個過程纔會被終止。當然,我需要確保發現任何可能的異常,並且我相信我正在這樣做。如果我不是,那是一個錯誤和我的問題。 – Clyde

0

如果你擔心這個,然後在onDestroy of the IntentService發送廣播標誌(或者只是設置一個斷點,所以你可以看到,如果被擊中的話)。 IntentService的目的是作爲一個簡化的服務來處理它自己的生命週期,所以如果你將工作從服務傳遞到線程池,IntentService可能會認爲它完成了它的工作 - 你可以在onDestroy中捕獲它。

顯然不能說,如果是不看的代碼發生,但這種機制可以讓你檢查它是否。

相關問題