我有一個Service
應該與服務器保持永久連接以接收通知。我的應用程序準時從服務器獲取消息至關重要。使用AlarmManager定期檢查我的永久服務正在運行
我無法使用GCM Push,因爲連接將位於本地網絡中,並且手機可能沒有任何互聯網連接。我也知道在服務中保持永久連接的電池問題,但是我會讓用戶選擇此選項並通知他/她有關潛在的電池耗盡情況(實際上,該功能在設備始終處於相同狀態連接電源的地方)。我也知道Android系統可以隨時殺死我的服務,甚至用戶可以使用任務殺手來擺脫當時運行的所有服務。
說,我想定期使用AlarmManager
來檢查我的Service
是否正在運行,如果不是,請重新啓動它。我不相信這個選項,因爲服務器可以在服務被終止但尚未由AlarmManager
重新啓動後發送消息。
我的問題基本上是否有更好的策略來確保我能夠按時收到消息?
到目前爲止,我所能找到的所有相關信息都支持避免永久服務和使用其他服務,但由於我的用例的性質,我沒有其他選擇。
這實際上是一個好主意:)我認爲它是完美的,因爲通過這個通知,用戶知道服務正在後臺運行,並且他/她可以點擊它來禁用它。如果Android殺死服務,用戶也會知道。 爲了完整起見,我可以說我在'onStartCommand()'回調中調用'startForeground()'。這裏有一個例子:https://github.com/commonsguy/cw-android/blob/master/Notifications/FakePlayer/src/com/commonsware/android/fakeplayerfg/PlayerService.java – Esparver 2013-04-29 12:31:57