廣播的註冊、發送和接收過程
- 2019 年 10 月 7 日
- 筆記
-諸如此類的四大組件的啟動過程經常在面試中被問到
一。廣播的註冊過程(動態註冊)

1)靜態註冊在應用安裝時由PackageManagerService來完成註冊過程
2)IIntentReceiver是一個Binder介面,用於廣播的跨進程的通訊,它在LoadedApk.ReceiverDispatcher.InnerReceiver中實現
3)註冊廣播是一個跨進程過程,需要具有跨進程的通訊功能的IIntentReceiver
4)粘性廣播是存儲在AMS中的
5)ReceiverList繼承自ArrayList,用來存儲廣播接收者
6)AMS接收到廣播時就可以從mReceiverResolver中找到對應的廣播接收者了,從而達到了註冊廣播的目的
二。廣播的發送和接收過程
第一步。ContextImpl到AMS的調用過程

第二步。AMS到BroadcastReceiver的調用過程

1)IIntentReceiver和IActivityManager一樣,都使用了AIDL來實現進程間通訊。InnerReceiver繼承自IIntentReceiver.Stub,是Binder通訊的伺服器端,IIntentReceiver則是Binder通訊的客戶端、InnerReceiver在本地的代理,它的具體實現就是InnerReceiver
--摘自《Android進階解密》