2011-02-05 64 views
1

任何具有明顯服務的應用程序都要求它始終運行。它是產品的一部分,如果它是付費應用程序 - 用戶期望它。如何保持服務的活力?

但是,如果Android操作系統感覺到內存壓力或者出現問題並且服務崩潰,那麼似乎沒有辦法讓服務不被破壞。

確保服務始終運行的最佳方式是什麼?

明智地創建第二個服務,偶爾啓動「有用」的服務,如果運行它將被忽略?

+2

不要這樣做。你只會被任務殺手殺死,你的用戶不應該殺死你的服務。改用AlarmManager。 – Falmarri 2011-02-05 10:08:08

回答

3

說實話,我不確定這是不是一個好主意。

如果有足夠的內存壓力,對其他應用程序堅持運行是不公平的。服務也只能在嚴重的低內存情況下被踢掉。

如果你寫了一個收割者服務,這個人也可以被踢出去。

正如你所說「如果它是付費應用程序 - 用戶期望它。」 - 用戶也希望這款應用可以很好地發揮作用

+1

+1「用戶希望應用程序可以很好地播放」 – Falmarri 2011-02-05 10:08:55

1

如果您的服務「至關重要」,那麼您可以使用startForeground,它可以爲您的服務提供與前臺活動相同的優先級。

+0

我剛剛使用AlarmManager和IntentService重寫了我的代碼,但似乎每當我的應用程序運行並且警報已註冊時,它都會跳過其已在運行的自己的實例,死亡。警報每小時也停止執行,無論如何,這有什麼意義? – kidalex 2011-02-05 12:30:14