Android 應(yīng)用被殺掉之后 Service 的重啟問題

背景

最近自己做的性能搜集apk出現(xiàn)了一些很迷的問題,其實(shí)又是機(jī)型的兼容問題,就是在性能的service運(yùn)行期間如果殺掉性能搜集的apk,那么在sumsung的機(jī)器上,service會(huì)重啟,而在國(guó)內(nèi)的廠商定制的odm里面,就不會(huì)重啟

思考

在運(yùn)行service期間,如果我們殺掉apk,粗略地應(yīng)該會(huì)經(jīng)歷下面幾個(gè)過程

  • 殺掉apk
  • ActivityManager判斷到service沒有完成
  • 觸發(fā)重啟機(jī)制
  • 重啟

為什么會(huì)殺掉重啟,各個(gè)廠商的表現(xiàn)不同?

  • service的onStartCommand返回值的影響
  • 猜測(cè)是各個(gè)廠商的判斷重啟機(jī)制不同,這個(gè)會(huì)涉及到ActivityManager的判斷機(jī)制

步驟

驗(yàn)證問題1:Service的onStartCommand的返回值是不是會(huì)影響Service的生命周期?

是會(huì)的,而且和OnStartCommand的返回值有關(guān)。

三星比較接近原生的android系統(tǒng),從三星的現(xiàn)象來看,返回值影響如下:

  • START_STICKY:application被kill掉之后,會(huì)重啟service,并且重新開始
  • START_NO_STICKY :沒有重新啟動(dòng)起來
  • START_REDELIVER_INTENT : 這個(gè)需要實(shí)驗(yàn)一下

驗(yàn)證問題2:這個(gè)是不是跟廠商有關(guān)?
是和廠商有關(guān)的,在接近原生的系統(tǒng)里的預(yù)期結(jié)果應(yīng)該是和官網(wǎng)給出的這幾個(gè)期望值有關(guān)的,但是廠商不知道做了什么奇怪的操作導(dǎo)致了這個(gè)我們的service沒有重啟起來。之前在手機(jī)廠商工作的時(shí)候,他們的rom都是定制過的,需要添加白名單,應(yīng)用才不會(huì)被殺死

問題

其實(shí)很多東西為什么網(wǎng)上說了之后但是在國(guó)內(nèi)的那些手機(jī)廠商卻實(shí)驗(yàn)不出效果,應(yīng)該其中很大一部分原因就是國(guó)內(nèi)的rom都不知道被改爛成什么樣了,最好自己弄個(gè)android模擬器自己去實(shí)驗(yàn)一下。

總結(jié)

這個(gè)問題的結(jié)論就是,app殺掉的預(yù)期結(jié)果不同的手機(jī)廠商是不一樣的,因?yàn)槭謾C(jī)廠商很多東西都是定制過的,真的不做兼容性測(cè)試,這個(gè)是搞不出來的。所以以后多點(diǎn)在原生的系統(tǒng)去驗(yàn)證官網(wǎng)說的那些東西,然后如果有需要的測(cè)試項(xiàng)的話,就需要拿多點(diǎn)國(guó)內(nèi)的手機(jī)廠商的手機(jī)去實(shí)驗(yàn)一下。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容