1. 程式人生 > >廣播的註冊、傳送和接收過程

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

--摘自《Android進階解密》

一。廣播的註冊過程(動態註冊)

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