這篇文章將為大家詳細(xì)講解有關(guān)Android項(xiàng)目中如何避免service在后臺(tái)中被kill掉,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
創(chuàng)新互聯(lián)專注于企業(yè)營(yíng)銷型網(wǎng)站、網(wǎng)站重做改版、銅仁網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、商城網(wǎng)站定制開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為銅仁等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。一、onStartCommand方法,返回START_STICKY
START_STICKY 在運(yùn)行onStartCommand后service進(jìn)程被kill后,那將保留在開始狀態(tài),但是不保留那些傳入的intent。不久后service就會(huì)再次嘗試重新創(chuàng)建,因?yàn)楸A粼陂_始狀態(tài),在創(chuàng)建 service后將保證調(diào)用onstartCommand。如果沒有傳遞任何開始命令給service,那將獲取到null的intent。
START_NOT_STICKY 在運(yùn)行onStartCommand后service進(jìn)程被kill后,并且沒有新的intent傳遞給它。Service將移出開始狀態(tài),并且直到新的明顯的方法(startService)調(diào)用才重新創(chuàng)建。因?yàn)槿绻麤]有傳遞任何未決定的intent那么service是不會(huì)啟動(dòng),也就是期間onstartCommand不會(huì)接收到任何null的intent。
START_REDELIVER_INTENT 在運(yùn)行onStartCommand后service進(jìn)程被kill后,系統(tǒng)將會(huì)再次啟動(dòng)service,并傳入最后一個(gè)intent給onstartCommand。直到調(diào)用stopSelf(int)才停止傳遞intent。如果在被kill后還有未處理好的intent,那被kill后服務(wù)還是會(huì)自動(dòng)啟動(dòng)。因此onstartCommand不會(huì)接收到任何null的intent。
二、提升service優(yōu)先級(jí)
在AndroidManifest.xml文件中對(duì)于intent-filter可以通過android:priority = "1000"這個(gè)屬性設(shè)置最高優(yōu)先級(jí),1000是最高值,如果數(shù)字越小則優(yōu)先級(jí)越低,同時(shí)適用于廣播。
三、提升service進(jìn)程優(yōu)先級(jí)
Android中的進(jìn)程是托管的,當(dāng)系統(tǒng)進(jìn)程空間緊張的時(shí)候,會(huì)依照優(yōu)先級(jí)自動(dòng)進(jìn)行進(jìn)程的回收。Android將進(jìn)程分為6個(gè)等級(jí),它們按優(yōu)先級(jí)順序由高到低依次是:
1.前臺(tái)進(jìn)程( FOREGROUND_APP)
2.可視進(jìn)程(VISIBLE_APP )
3.次要服務(wù)進(jìn)程(SECONDARY_SERVER )
4.后臺(tái)進(jìn)程 (HIDDEN_APP)
5.內(nèi)容供應(yīng)節(jié)點(diǎn)(CONTENT_PROVIDER)
6.空進(jìn)程(EMPTY_APP)
當(dāng)service運(yùn)行在低內(nèi)存的環(huán)境時(shí),將會(huì)kill掉一些存在的進(jìn)程。因此進(jìn)程的優(yōu)先級(jí)將會(huì)很重要,可以使用startForeground 將service放到前臺(tái)狀態(tài)。這樣在低內(nèi)存時(shí)被kill的幾率會(huì)低一些。
四、onDestory里面發(fā)送廣播重啟service
service +broadcast 方式,就是當(dāng)service走ondestory的時(shí)候,發(fā)送一個(gè)自定義的廣播,當(dāng)收到廣播的時(shí)候,重新啟動(dòng)service;
五、Application加上Persistent屬性
六、監(jiān)聽系統(tǒng)廣播判斷Service狀態(tài)
通過系統(tǒng)的一些廣播,比如:手機(jī)重啟、界面喚醒、應(yīng)用狀態(tài)改變等等監(jiān)聽并捕獲到,然后判斷我們的Service是否還存活,別忘記加權(quán)限啊。
七、雙進(jìn)程Service
讓2個(gè)進(jìn)程互相保護(hù),其中一個(gè)Service被清理后,另外沒被清理的進(jìn)程可以立即重啟進(jìn)程
八、聯(lián)系廠商,加入白名單
關(guān)于Android項(xiàng)目中如何避免service在后臺(tái)中被kill掉就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
分享標(biāo)題:Android項(xiàng)目中如何避免service在后臺(tái)中被kill掉-創(chuàng)新互聯(lián)
文章源于:http://jinyejixie.com/article18/ccspdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、微信小程序、品牌網(wǎng)站制作、微信公眾號(hào)、網(wǎng)站策劃、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容