android如何保證service不被殺死

2021-06-27 18:11:34 字數 1741 閱讀 4903

android開發的過程中,每次呼叫startservice(intent)的時候,都會呼叫該service物件的onstartcommand(intent,int,int)方法,然後在onstartcommand方法中做一些處理。

從android官方文件中,我們知道onstartcommand有4種int返回值,首先簡單地講講int返回值的作用。

一、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後一定能重啟。

二、建立不被殺死的service

1.在service中重寫下面的方法,這個方法有三個返回值, start_sticky(或start_sticky_compatibility)是service被kill掉後自動重寫建立

@override

public int onstartcommand(intent intent, int flags, int startid)

或@override

public int onstartcommand(intent intent, int flags, int startid)

@override

public void onstart(intent intent, int startid)

2.在service的ondestroy()中重啟service.

public void ondestroy()

3.建立乙個廣播

public class myreceiver extends broadcastreceiver

}4.androidmanifest.xml中註冊廣播myreceiver及myservice服務

注:解鎖,啟動,切換場景啟用廣播需加許可權,如啟動完成,及手機機狀態等。

變成核心程式,在360殺掉程序的時候,myreceiver照樣有效,保證service重生。呃

kill問題:

1. settings 中stop service

ondestroy方法中,呼叫startservice進行service的重啟。

2.settings中force stop 應用

捕捉系統進行廣播(action為android.intent.action.package_restarted)

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

android:persistent="true"

android:label="@string/dialericonlabel"

android:icon="@drawable/ic_launcher_phone">

...

質量如何保證

讀書主要是為了緩解非利益既得者的焦慮,有人懂嗎?之前對於質量的把控,主要是從 層面,從實現機制 業務邏輯 編碼規範等方面去用功,直到最近才忽然想到這可能是個謬論,只關注了乙個孤立的體系,說是閉門造車也不為過。傳統的生產製造領域早就有qc和qa,而對於像我們這種經歷的網際網路創業人員團隊,對於這一塊是...

Android怎麼保證service不被殺死

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

如何保證編碼規範

如何保證 規範 第一步當然是有乙個 規範文件 很多人認為只要有了 規範文件 就規範了,這個是打錯特錯了。規範文件只是 規範的第一步。下面介紹如何保證 規範的步驟。一 還是建立 規範文件 二 新員工學習方法 2 要做習題 給幾個不是很標準的 檔案,要求新員工找出至少3處有問題的地方 這個比寫測試題簡單...