2012-02-07 111 views
5

通過使用START_STICKY,如果我的服務被任務管理器崩潰/中止,它會自動重新啓動。我看到有一個服務列表重新啓動,但順序不同。我想優先重新啓動服務,以便通過放置到隊列的前端來儘早啓動服務。優先安排崩潰的android服務的重新啓動

通常需要15秒到45秒才能重新啓動服務。有沒有辦法優先考慮或開始此服務比其他更早。

回答

0

您的服務是否長期運行?如果是這樣,試着擺脫它,只在需要時才啓動它。 Android服務並不意味着作爲守護進程運行,它們意味着在不需要用戶交互和界面的情況下在後臺作爲短暫的活動工作人員運行。

大部分「我只是坐在」服務可以聽廣播意圖,並以這種方式成爲一個好公民。另一件事:如果你的服務已經短暫運行並且一個任務殺手處於活動狀態,那很容易:這是用戶問題,而不是你的錯。該系統不需要任務殺手,你不應該照顧他們。用戶應該知道使用它們並不健康。

+0

礦是「另一件事」。我相信我應該添加一條消息將我的應用程序添加到任務管理器忽略列表。 – dcanh121 2012-02-17 21:19:51

0

我想這個解決方案有點髒,但你可以使用一個新的服務,開始START_STICKY並將所有其他服務設置爲START_NOT_STICKY

然後,您可以使用新服務啓動所有其他服務(儘管這不一定需要)。這實際上是一個簡單的實現,因爲您可以將整個意圖傳遞給將要啓動的服務。

然後,您可以在所有服務的OnDestroy()上添加廣播以告知新服務,即舊系統中的一個已被系統殺死。您也可以通過OnDestroy()傳遞舊的起始意圖,以便重新啓動它。

如果您的新服務被終止,您可以在重新啓動後檢查是否有其他服務也被終止,然後優先重新啓動。

相關問題