Android中的Serializable、Parcelable">Android中的Serializable、Parcelable
788
2025-03-31
文章目錄
一、 應用進程拉活簡介
二、 廣播拉活
三、 顯示廣播與隱式廣播
四、 全家桶拉活
一、 應用進程拉活簡介
之前的博客講解的都是避免應用程序被殺死 , 提高應用進程的優先級 ;
現在開始講解進程拉活 , 進程被殺死以后 , 如何進行拉活 ;
只要進行進程拉活 , 都會或多或少占用系統的資源 , 尤其是內存資源 , 因此 Android 官方對這種操作進行了各種限制 , 從 Android 7.0 開始限制 , 到 Android 8.0 之后 , 基本無法進行應用拉活操作 ;
對應用進程拉活 , 不能保證 100 % 100\% 100% 成功率 , 即使拉活成功 , 拉活方案也是有很多缺陷 ,
二、 廣播拉活
監聽系統的廣播事件 , 系統在發生特定事件時 , 發出對應事件廣播 ;
在 AndroidManifest.xml 中 靜態注冊 的廣播接收者可以接受系統發出的廣播 , 監聽這些廣播 , 然后由系統自動拉活廣播接收者所在的應用進程 ;
如果很多應用靜態注冊接收系統廣播 , 每次系統發出廣播時 , 就會激活很多應用 , 此時會消耗大量資源 , 從而讓手機變得很卡 , 用戶體驗變差 ;
Android 7.0 ( API Level 24 ) 開始對廣播進行了限制 ;
Android 8.0 ( API Level 26 ) 限制更嚴格 , 基本就禁止了這種做法 ; 在該版本及以后的版本中無法在 AndroidManifest.xml 清單文件中注冊接收隱式廣播的廣播接收者 ; ( 有幾種特例 )
Android 8.0 ( API Level 26 ) 后僅有少數幾個隱式廣播 , 可以在AndroidManifest.xml 清單文件中注冊接收到的 , 如 ACTION_LOCKED_BOOT_COMPLETED、ACTION_BOOT_COMPLETED 開機廣播 , ACTION_USER_INITIALIZE 用戶賬戶添加廣播 , ACTION_LOCALE_CHANGED 時間區域改變廣播 等 , 詳細細節參考 https://developer.android.google.cn/guide/components/broadcast-exceptions.html 文檔 ;
這些隱式廣播發出來的情況很特殊 , 有可能一天也發不出一條廣播 , 用于拉活應用進程不太合適 ;
參考文檔 :
Android 官方文檔 - Oreo 版本適配 : 后臺執行限制
Android 官方文檔 - Intent 和 Intent 過濾器
三、 顯示廣播與隱式廣播
Intent 類型 :
顯示 Intent : Intent 中提供了軟件包名 或 組件的全類名 ; 如 設置 組件 Class 對象 ;
隱式 Intent : 沒有指定特定的組件 , 允許其它應用組件處理該意圖 ; 如 設置 action 字符串 ;
參考文檔 : https://developer.android.google.cn/guide/components/intents-filters
顯示廣播 與 隱式廣播 :
顯示廣播 : 指明了目標組件名稱 , 常用于應用內的廣播發送接收 ;
隱式廣播 : 沒有指明組件名稱 , 絕大部分的廣播都是隱式廣播 , 很少有發送廣播的時候把廣播接收者的組件名稱帶上的 , 系統廣播都是隱式廣播 ;
參考文檔 :
Android 官方文檔 - Oreo 版本適配 : 后臺執行限制
Android 官方文檔 - Intent 和 Intent 過濾器
四、 全家桶拉活
全家桶拉活 : 多個應用之間使用顯示廣播互相拉活 ;
Android 任務調度
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。