如何保證service在後台不被kill

2021-07-24 19:04:01 字數 1064 閱讀 2187

推薦參考部落格

一、onstartcommand方法,返回start_sticky

1、start_sticky 在執行onstartcommand後service程序被kill後,那將保留在開始狀態,但是不保留那些傳入的intent。不久後service就會再次嘗試重新建立,因為保留在開始狀態,在建立 service後將保證呼叫onstartcommand。如果沒有傳遞任何開始命令給service,那將獲取到null的intent。

2、startnotsticky 在執行onstartcommand後service程序被kill後,並且沒有新的intent傳遞給它。service將移出開始狀態,並且直到新的明顯的方法(startservice)呼叫才重新建立。因為如果沒有傳遞任何未決定的intent那麼service是不會啟動,也就是期間onstartcommand不會接收到任何null的intent。

3、startredeliverintent 在執行onstartcommand後service程序被kill後,系統將會再次啟動service,並傳入最後乙個intent給onstartcommand。直到呼叫stopself(int)才停止傳遞intent。如果在被kill後還有未處理好的intent,那被kill後服務還是會自動啟動。因此onstartcommand不會接收到任何null的intent。

二、提公升service優先順序

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

三、提公升service程序優先順序

四、ondestroy方法裡重啟service

service +broadcast 方式,就是當service走ondestory的時候,傳送乙個自定義的廣播,當收到廣播的時候,重新啟動service;

六、監聽系統廣播判斷service狀態

通過系統的一些廣播,比如:手機重啟、介面喚醒、應用狀態改變等等監聽並捕獲到,然後判斷我們的service是否還存活,別忘記加許可權啊。

七、通過jni實現程序守護

推薦檢視

保證service在後台不被kill

android 其實無法做多絕對的不被後台kill掉,我們只能盡量使用一些操作提公升不被kill的機會。一 onstartcommand方法,返回start sticky start sticky 在執行onstartcommand後service程序被kill後,那將保留在開始狀態,但是不保留那些...

ORMLite在後台service中進行資料處理

第一步 建立類和在libs加入ormlite的jar包 如圖 一點要記住在androidmanifest.xml中進行註冊 建立類的內容 mainactivity類 pangcreateormlite類 pangservice類 student類 package com.kiaoke.ormlite...

android如何保證service不被殺死

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