您的位置首页百科问答

注册广播接收器(registerReceiver)分析

注册广播接收器(registerReceiver)分析

的有关信息介绍如下:

注册广播接收器(registerReceiver)分析

动态注册registerReceiver:主要就是将广播接收器receiver封装到LoadedApk的InnerReceiver(继承IIntentReceiver接口的binder对象)及广播类型filter传给ActivityManagerService保存起来,别人在发送广播时,在AMS过滤后发送过来. 时序图:Step2:ContextImpl.registerReceiver(): getOuterContext()就是XXXActivity. Setp3:scheduler = mMainThread.getHandler()是handler: Step 4:LoadedApk.getReceiverDispatcher,返回IIntentReceiver接口对象rd的Binder对象: 从LoadedApk的成员变量mReceivers获取相应的ReceiverDispatcher,如果不存在则新建一个,并保存起来。 Step5:LoadedApk .ReceiverDispatcher : 新建ReceiverDispatcher同时,会创建一个实现IIntentReceiver接口的binder对象:InnerReceiver,这是用来和AMS通讯时调用performReceive Step6:ActivityManagerProxy .registerReceiver 这个函数通过Binder驱动程序就进入到ActivityManagerService中的registerReceiver函数中去了。 Step 7:AMS.registerReceiver: 把广播接收器receiver和filter关联起来,并保存到mReceiverResolver.这样,广播接收器注册到这边就可以了。