天天看點

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

一。廣播的注冊過程(動态注冊)

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

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

繼續閱讀