2011-02-05 51 views
4

我有問題,beetwen兩個後續調用startService IntentService的私人數據被清除 - 我假設服務在第一次調用完成後停止,然後在處理第二次調用時重新創建。有什麼辦法可以強制IntentService不被重新創建,或者將這些私有數據存儲在startService例程的兩個後續調用中是相同的嗎?有沒有辦法強制IntentService不被重新創建?

回答

2

我假設服務在第一次調用完成後停止,然後在處理第二次調用時重新創建。

不會。只有在收到的所有Intents都已處理完畢後纔會停止。

+1

好吧,讓我們假設第一個意圖已經發送,然後它由IntentService處理,並且IntentService被停止。一段時間後,第二個意圖被髮送 - 我如何恢復IntentService的上下文來處理以前的意圖? – miqqo 2011-02-05 22:50:56

3

如果你想嘗試來保持跨實例的數據,你可以把它放在一個靜態變量。一個典型的例子是:你有一些你加載磁盤的狀態,所以你創建一個全局單例,它在第一次實例化時加載數據,然後進一步請求它使用相同的實例(不需要重新加載數據)。當你的服務的一個新實例在onCreate()中檢索單例時,如果之前的服務實例已經請求了它,它不需要重新加載。

當做這樣的設計時,瞭解您的流程的生命週期以及何時可以殺死流程非常重要。否則,當正常操作過程中死亡時,可能會以相當隨機的點丟失數據。

相關問題