如何保證service不被kill掉的方法總結

2021-06-18 00:34:21 字數 1122 閱讀 5358

kill的情況有幾種:

1.在設定的執行裡kill掉service,這種情況可以ondestroy方法中,呼叫startservice進行service的重啟。

2.在設定裡面強制停止捕捉系統進行廣播(action為android.intent.action.package_restarted)

3. 借助第三方應用kill掉running task

提公升service的優先順序

提高service優先順序的方法可以用,startforeground(int, notification),但是在1.5以後將service的優先順序提公升到foreground層次需要繫結notification,會在狀態列裡顯示,另外可以在

intent-filter裡可以通過android:priority = "1000"這個屬性設定最高優先順序,1000是最高值,如果數字越小則優先順序越低,同時適用於廣播。

我們在呼叫startservice(intent)的時候,都會呼叫該service物件的onstartcommand(intent,int,int)方法,然後在onstartcommand方法中做一些處理。然後我們注意到這個函式有乙個int的返回值,利用這些返回值也可以實現service被kill掉重啟的效果。

從android官方文件中,我們知道onstartcommand有4種返回值:

start

_sticky:如果service程序被kill掉,保留service的狀態為開始狀態,但不保留遞送的intent物件。隨後系統會嘗試重新建立service,由於服務狀態為開始狀態,所以建立服務後一定會呼叫onstartcommand(intent,int,int)方法。如果在此期間沒有任何啟動命令被傳遞到service,那麼引數intent將為null。

start_not_sticky:「非粘性的」。使用這個返回值時,如果在執行完onstartcommand後,服務被異常kill掉,系統不會自動重啟該服務。

start_redeliver_intent:重傳intent。使用這個返回值時,如果在執行完onstartcommand後,服務被異常kill掉,系統會自動重啟該服務,並將intent的值傳入。

start_sticky_compatibility:start_sticky的相容版本,但不保證服務被kill後一定能重啟。

android如何保證service不被殺死

android開發的過程中,每次呼叫startservice intent 的時候,都會呼叫該service物件的onstartcommand intent,int,int 方法,然後在onstartcommand方法中做一些處理。從android官方文件中,我們知道onstartcommand有4...

如何保證service在後台不被kill

推薦參考部落格 一 onstartcommand方法,返回start sticky 1 start sticky 在執行onstartcommand後service程序被kill後,那將保留在開始狀態,但是不保留那些傳入的intent。不久後service就會再次嘗試重新建立,因為保留在開始狀態,在...

Android怎麼保證service不被殺死

官方文件告訴我們,android系統會盡量保持擁有service的程序執行,只要在該service已經被啟動 start 或者客戶端連線 bindservice 到它。當記憶體不足時,需要保持,擁有service的程序具有較高的優先順序。1 如果service正在呼叫oncreate,onstart...