推薦參考部落格
一、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...