保證service不被殺死

2021-08-03 12:52:23 字數 948 閱讀 8628

1、service設定成start_sticky

kill 後會被重啟(等待5秒左右),重傳intent,保持與重啟前一樣

2、提公升service優先順序

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

【結論】目前看來,priority這個屬性貌似只適用於broadcast,對於service來說可能無效

提公升service程序優先順序

3、android中的程序是託管的,當系統程序空間緊張的時候,會依照優先順序自動進行程序的**

當service執行在低記憶體的環境時,將會kill掉一些存在的程序。因此程序的優先順序將會很重要,可以在startforeground()使用startforeground()將service放到前台狀態。這樣在低記憶體時被kill的機率會低一些。

【結論】如果在極度極度低記憶體的壓力下,該service還是會被kill掉,並且不一定會restart()

ondestroy方法裡重啟service

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

也可以直接在ondestroy()裡startservice

監聽系統廣播判斷service狀態

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

【結論】這也能算是一種措施,不過感覺監聽多了會導致service很混亂,帶來諸多不便

在jni層,用c**fork乙個程序出來

這樣產生的程序,會被系統認為是兩個不同的程序.但是android5.0之後可能不行

大招: 放乙個畫素在前台(手機qq)

如何保證Service不被殺死一直執行

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

如何保證Service不被殺死一直執行

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

Android Service 服務不被殺死的妙招

這篇文章主要介紹了android service 服務不被殺死的妙招的相關資料,需要的朋友可以參考下 service是android 系統中的一種元件,它跟activity的級別差不多,但是他不能自己執行,只能後台執行,並且可以和其他元件進行互動。android開發的過程中,每次呼叫startser...