决战梭哈棋牌APP下载_决战梭哈棋牌官网 - 由决战梭哈棋牌APP下载,决战梭哈棋牌官网社主办的《决战梭哈棋牌APP下载,决战梭哈棋牌官网》是我国消费领域中一张全国性、全方位、大容量的综合性日报。其立足消费网投领域,依托轻工行业,面向城乡市场,最先发布相关的专业权威资讯。

BroadcastReceiver的源码分析

  • 时间:
  • 浏览:0

APK安装流程

BroadcastQueue.scheduleBroadcastsLocked

ContextImpl.registerReceiverInternal

AMS将IIntentReceiver保存到mReisterdReceivers中,最终保存到mReceiverResolver.addFilter(bf);中。

该函数根据BroadcastReceiver对象生成IIntentReceiver对象,该对象和ApplicationThread的功能一样,试想一下,APP系统进程向AMS系统进程注册广播,当AMS收到广播向APP系统进程架构设计 时须要用到Binder调用,IIntentReceiver而是我进行跨系统进程调用的。

performReceiverLocked继续调用IItentReceiver.performReceiver,该调用的Binder妙招,

scheduleBroadcastsLocked结速英语 进行广播发送

performReceiverLocked

sendBroascast流程

广播架构设计

AMS.registerReceiver

最终调用了Args.run

registerReceiver流程

Handler消息最终调用了BroadcastQueue.processNextBroadcast,并且调用了performReceiveLocked,

Activity通过registerReceiver妙招进行广播注册,注册流程如下:

解析到APK里的静态广播会注册到PMS的mReceivers对象中,mReceivers类型为ActivityIntentResolver。

android提供静态和动态某种妙招进行消息注册,静态注册指的是在AndroidManifest.xml中进行注册,动态注册指的是在Activity通过registerReceiver的妙招进行广播注册。

AMS.broadcastIntentLocked

broadcastIntentLocked中receivers表示静态注册的广播,通过collectReceiverComponents从PMS那里获取;registerdReceivers表示动态注册的广播,从mReceiverResolver那里获取。在获取到要接受所有广播后,就调用如下函数进行广播架构设计 。

发送广播最终走到了AMS.broadcastIntentLocked,其中核心的代码如下所示:

其中installPackageLI完成了Apk的解析,生成了Package对象,scanPackageLi包括四大组件注册相似的操作。

processNextBroadcast调用了performReceiverLocked

静态广播注册指的是在AndroidManifest.xml注册Receiver,当Apk安装须要将静态注册的Receiver信息注册到PMS中,APK的安装流程(https://www.jianshu.com/p/953475cea991)如下:

processNextBroadcast

IItentReceiver.performReceiver

android提供了广播机制,通过BroadcastReceiver还须要在不同的系统进程间传递消息。相似于观察者模式,A应用通过注册广播表示A对消息subject感兴趣,当B应用发出subject类型的消息的以前,A应用就能收到对应的消息。

Args.run

PMS.scanPackageDirtyLI注册静态广播

Args.run通过类加载器加载Receiver对象,并最终调用onReceive函数,至此,广播发送完成。