說說Android應(yīng)用的persistent屬性

在Android系統(tǒng)中,有一種永久性應(yīng)用。它們對(duì)應(yīng)的AndroidManifest.xml文件里,會(huì)將persistent屬性設(shè)為true。

android:persistent="true"


我們知道,persistent一詞的意思是“持久”,那么persistent應(yīng)用的意思又是什么呢?簡(jiǎn)單地說,這種應(yīng)用會(huì)頑固地運(yùn)行于系統(tǒng)之中,從系統(tǒng)一啟動(dòng),一直到系統(tǒng)關(guān)機(jī)。

為了保證這種持久性,persistent應(yīng)用必須能夠在異常出現(xiàn)時(shí),自動(dòng)重新啟動(dòng)。在Android里是這樣實(shí)現(xiàn)的。每個(gè)ActivityThread中會(huì)有一個(gè)專門和AMS通信的binder實(shí)體——final ApplicationThread mAppThread。這個(gè)實(shí)體在AMS中對(duì)應(yīng)的代理接口為IApplicationThread。

當(dāng)AMS執(zhí)行到attachApplicationLocked()時(shí),會(huì)針對(duì)目標(biāo)用戶進(jìn)程的IApplicationThread接口,注冊(cè)一個(gè)binder訃告監(jiān)聽器,一旦日后用戶進(jìn)程意外掛掉,AMS就能在第一時(shí)間感知到,并采取相應(yīng)的措施。如果AMS發(fā)現(xiàn)意外掛掉的應(yīng)用是persistent的,它會(huì)嘗試重新啟動(dòng)這個(gè)應(yīng)用。


參考鏈接

說說Android應(yīng)用的persistent屬性

ANDROID使程序進(jìn)程不被LMK殺死

測(cè)試android:persistent="true"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,132評(píng)論 25 708
  • 1:InputChannel提供函數(shù)創(chuàng)建底層的Pipe對(duì)象 2: 1)客戶端需要新建窗口 2)new ViewRo...
    自由人是工程師閱讀 5,386評(píng)論 0 18
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,886評(píng)論 18 139
  • AndroidSmall框架是android中一個(gè)非常優(yōu)秀的插件化框架,有時(shí)我們不僅要學(xué)會(huì)使用它,也要去理解它的原...
    柴犬大人閱讀 1,298評(píng)論 0 6
  • 我寫的這個(gè)不是故事,又似故事,這我在2015年6月17日凌晨的夢(mèng)境記錄。 我是靜爾,C市一個(gè)公司的女職員一枚,朝九...
    靜爾閱讀 314評(píng)論 0 2