廣播註冊過程分析

原創:android廣播機制分析 

作者:eclipse_xu

url:http://blog.csdn.net/eclipsexys/article/details/38487621


1. 靜態註冊 Receiver 的流程

靜態 receiver 的註冊是由 PackageManagerService 開機的時候負責初始 PMS 在開機的時候會對系統一些目錄逐個掃描,解析 apk 文件。靜態廣播接收器就是在 PMS 做這件事情的時候順便處理的。
PMS 會解析 apk 的 manifest 文件,查找這裏註冊的 receiver,然後加載到內存中。
PMS 初始化掃描目錄的順序:
system/framework
system/app
vendor/app
data/appd
rm/app-private
        我們看到了 PMS 如何在初始化的時候如何解析 manifest 並把其中的 element 存放到內存中的其中receiver 保存到了 owner 的成員變量 receivers 中,owner 的類型是android.content.pm.PackageParser.Package 也就是說 scanPackageLI 返回結果就是已經包含了manifest 信息的 Package 對象。


2.動態註冊 Receiver 的流程

動態註冊最終會調用到 AMS 中的 registerReceiver 函數,最終所有動態註冊的 receiver 都保存到 AMS 的成員變量 mReceiverResolver 中。靜態廣播和動態廣播如何註冊的,我們已經全部分析完了。靜態廣播是 PackageManagerService負責,保存到其成員變量 mReceivers 中,動態廣播是 ActivityManagerService 負責,保存到其成員變量 mReceiverResolver 中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章