2014-10-06 62 views
2

我想保持服務在後臺運行,即使我的應用程序被終止。我正在使用android.intent.action.USER_PRESENT事件,但該服務僅在屏幕解鎖時運行。我試過android.intent.action.BOOT_COMPLETED,但它需要在下載應用程序後至少重新啓動手機一次。Android - 在後臺運行服務,即使應用程序死亡或設備重新啓動

理想情況下,我會開始我的服務全部X分鐘,例如使用ACTION_TIME_TICK。然後在開始服務之前檢查條件(電池電量,網絡連接...)。

問題是這樣的事件不能從manifest.xml聲明和監聽,而是在一個Activity中,這意味着應用程序是'活着的'。

有沒有辦法做我想要的呢?

+1

試試這個http://stackoverflow.com/questions/15758980/android-service-need-to-run-alwaysnever-pause-or-stop我不知道現在是否會因爲更新而有效已經在android上完成了,你可能不得不安裝你的應用程序作爲系統應用程序來獲得這個 – pcharb 2014-10-06 04:48:34

回答

2

需要一個look at AlarmManager,您可以使用它來確保您的服務仍然有效,如果沒有,請根據需要啓動/重新啓動。

您可以在安裝後第一次打開應用程序時註冊AlarmManager。從那時起,如果用戶重新啓動,請使用另一個(第二個)引導服務()以AlarmManager註冊您的服務。

可能有其他considerations with device sleep,且金額/這類工作你在你的後臺服務做,take a look at this lib and notes as well

AlarmManager能夠持續確保您的後臺服務是健康的。

+0

感謝您的評論,但它似乎也需要從一個活動設置AlarmManager。 – keepthepeach 2014-10-06 05:13:52

+0

所以你想要一個後臺服務,用戶安裝你的apk後立即啓動,但不啓動/打開應用程序(沒有殺死,但) – ashoke 2014-10-06 05:34:12

+0

理想情況下,是的。我不介意用戶是否必須至少啓動一次應用程序,但是我希望在後臺定期啓動服務,即使遇害,就像我在USER_PRESENT – keepthepeach 2014-10-06 05:40:25

相關問題