廣播的註冊、發送和接收過程

  • 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進階解密》

Tags: