一种Android插件框架支持新增广播接收者的方法、装置及设备制造方法及图纸

技术编号:18444596 阅读:21 留言:0更新日期:2018-07-14 10:15
本申请公开了一种Android插件框架支持新增广播接收者的方法及装置,以及一种电子设备。所述Android插件框架支持新增广播接收者的方法包括:当拦截到待分发的广播消息时,获取基于插件升级操作引入的接收所述广播消息的目标广播接收者列表;遍历所述目标广播接收者列表,启动目标广播接收者对应的升级插件;运行所述目标广播接收者对应的升级插件针对所述广播消息的处理函数。采用上述方法,解决现有的插件框架在支持新增广播接收者的方案存在程序执行效率低、影响广播的正常使用及影响系统性能等问题。

A Android plug-in framework supporting methods, devices and devices for adding new broadcast receivers

This application discloses a method and device for supporting new broadcast receivers by Android plug-in framework, and an electronic device. The methods of the Android plug-in framework support the new broadcasters include: when intercepting the broadcast message to be distributed, the target broadcast receiver list of received broadcast messages introduced based on the plug-in upgrade operation is obtained; the target broadcast receiver list is traversed and the upgrade plug-in corresponding to the broadcast receiver of the target is used. The running plug-in corresponds to the processing function of the broadcast plug-in corresponding to the broadcast message. The above methods are used to solve the problems of low efficiency of program execution, the normal use of broadcasting and the performance of the system, and so on.

【技术实现步骤摘要】
一种Android插件框架支持新增广播接收者的方法、装置及设备
本申请涉及Android系统插件化
,具体涉及一种Android插件框架支持新增广播接收者的方法及装置。
技术介绍
广播接收者(BroadcastReceiver)是Android系统上标准四大组件之一,本质是一种全局的监听器,它可以非常方便地实现系统不同组件之间的通信。在Android系统插件化
,插件包新增广播接收者作为插件内部、插件之间通信的标准系统组件,应用场景非常普遍。现有的插件框架支持新增广播接收者的方案,首先预先在主APK占位声明;然后将静态注册广播接收者转换为动态注册广播接收者。其中,360DroidPlugin将静态广播转换动态广播方案的步骤如下:首先,解析插件apk配置文件,获取所有广播列表;然后,在插件apk安装阶段,应用创建之后,遍历广播列表,通过反射构造广播接收者,连同IntentFilter一起,向系统动态注册广播接收者。广播接收者就能正常执行了。现有的插件框架在支持新增广播接收者的方案存在以下缺陷:1.所有插件内部广播接收者,全部当作新增广播接收者处理,静态注册转为动态注册,程序执行效率低。2.新增广播接收者所在插件没有安装运行时,广播接收者永远不会被触发,严重影响广播的正常使用。3.一旦系统动态注册广播接收者,在应用整个生命周期内,将一直在内存里面,不会释放,影响系统性能。综上所述,现有的插件框架在支持新增广播接收者的方案存在程序执行效率低、影响广播的正常使用及影响系统性能等缺陷。
技术实现思路
本申请提供一种Android插件框架支持新增广播接收者的方法,以解决现有的插件框架在支持新增广播接收者的方案存在程序执行效率低、影响广播的正常使用及影响系统性能等问题。所述Android插件框架支持新增广播接收者的方法包括:当拦截到待分发的广播消息时,获取基于插件升级操作引入的接收所述广播消息的目标广播接收者列表;遍历所述目标广播接收者列表,启动目标广播接收者对应的升级插件;运行所述目标广播接收者对应的升级插件针对所述广播消息的处理函数。可选的,所述拦截待分发的广播消息,包括:在ActivityManagerNative的实现内拦截所述广播消息或在ContextImpl类的实现内拦截所述广播消息。可选的,所述获取插件升级操作导致的接收所述广播消息的目标广播接收者列表,包括:判断是否有插件升级,若是,获取升级插件;针对每个升级插件,解析所述升级插件包配置文件Manifest,获取广播接收者列表;从所述广播接收者列表获取新增广播接收者列表;通过匹配操作获取需要接收所述广播消息的目标广播接收者列表。可选的,所述从所述广播接收者列表获取新增广播接收者列表,包括:通过系统服务PackageManagerService检测来获取所述广播接收者列表中的新增广播接收者列表。可选的,所述通过匹配操作获取需要接收所述广播消息的目标广播接收者列表的步骤如下:解析新增广播接收者列表中的每个新增广播接收者的IntentFilter,生成过滤器;通过过滤器循环遍历,获取匹配成功的所述目标广播接收者列表。可选的,所述运行目标广播接收者对应的升级插件针对所述广播消息的处理函数,包括:通过插件类加载器反射构造所述目标广播接收者,执行其onReceive方法。可选的,所述通过插件类加载器反射构造所述目标广播接收者,执行其onReceive方法,包括:将匹配到的目标广播接收者按照所在升级插件构成一个Map,Key为升级插件名称,value为所述升级插件对应的目标广播接收者列表;遍历所述Map,根据所述升级插件名称启动对应的升级插件;针对所述升级插件对应的每个目标广播接收者,使用对应插件类加载器反射构造目标广播接收者并执行所述目标广播接收者对应的升级插件针对所述广播消息的onReceive方法。可选的,所述运行目标广播接收者对应的升级插件针对所述广播消息的处理函数,具体为:向系统动态注册广播接收者,由系统执行其onReceive方法。本申请还提供一种Android插件框架支持新增广播接收者的装置,所述装置包括:获取单元,用于当拦截到待分发的广播消息时,获取基于插件升级操作引入的接收所述广播消息的目标广播接收者列表;启动单元,用于遍历从获取单元中获取的所述目标广播接收者列表,启动目标广播接收者对应的升级插件;运行单元,用于运行所述目标广播接收者对应的升级插件针对所述广播消息的处理函数。本申请还提供一种电子设备,该电子设备支持Android系统,包括:处理器;以及存储器,用于存储一种Android插件框架支持新增广播接收者的程序,该设备通电并通过所述处理器运行所述Android插件框架支持新增广播接收者的程序后,执行下述步骤:当拦截到待分发的广播消息时,获取基于插件升级操作引入的接收所述广播消息的目标广播接收者列表;遍历所述目标广播接收者列表,启动目标广播接收者对应的升级插件;运行所述目标广播接收者对应的升级插件针对所述广播消息的处理函数。与现有技术相比,本申请具有以下优点:本申请提供一种Android插件框架支持新增广播接收者的方法,包括:当拦截到待分发的广播消息时,获取基于插件升级操作引入的接收所述广播消息的目标广播接收者列表;遍历所述目标广播接收者列表,启动目标广播接收者对应的升级插件;运行所述目标广播接收者对应的升级插件针对所述广播消息的处理函数。本申请提供的Android插件框架支持新增广播接收者的方法,当拦截到待分发的广播消息时,获取基于插件升级操作引入的接收所述广播消息的目标广播接收者列表,只有插件升级时,才执行新增广播接收者拦截代理逻辑,执行效率更高;无论新增目标广播接收者所在的插件是否安装运行,都可以通过运行新增目标广播接收者对应的升级插件针对所述广播消息的处理函数,完美支持新增目标广播接收者正常运行;广播接收者运行完了之后,就会释放,不影响性能。附图说明图1是本申请第一实施例提供的一种Android插件框架支持新增广播接收者的方法的流程图。图2是本申请第一实施例中提供的获取基于插件升级操作引入的接收所述广播消息的目标广播接收者列表的流程图。图3是本申请第二实施例提供的一种Android插件框架支持新增广播接收者的装置的示意图。具体实施方式在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是,本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。本申请第一实施例提供了Android插件框架支持新增广播接收者的方法。请参考图1,其示出了根据本申请的实施例提供的Android插件框架支持新增广播接收者的方法的流程图。以下结合图1进行详细说明。步骤S101,当拦截到待分发的广播消息时,获取基于插件升级操作引入的接收所述广播消息的目标广播接收者列表。本步骤在拦截到待分发的广播消息时,将插件升级导致的新增的能够接收所述广播消息的目标广播接收者找到,为启动目标广播接收者做好了准备。所述消息(Intent),是Android提供的用来协助应用间交互与通讯的机制,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,And本文档来自技高网...

【技术保护点】
1.一种Android插件框架支持新增广播接收者的方法,其特征在于,包括:当拦截到待分发的广播消息时,获取基于插件升级操作引入的接收所述广播消息的目标广播接收者列表;遍历所述目标广播接收者列表,启动目标广播接收者对应的升级插件;运行所述目标广播接收者对应的升级插件针对所述广播消息的处理函数。

【技术特征摘要】
1.一种Android插件框架支持新增广播接收者的方法,其特征在于,包括:当拦截到待分发的广播消息时,获取基于插件升级操作引入的接收所述广播消息的目标广播接收者列表;遍历所述目标广播接收者列表,启动目标广播接收者对应的升级插件;运行所述目标广播接收者对应的升级插件针对所述广播消息的处理函数。2.根据权利要求1所述的Android插件框架支持新增广播接收者的方法,其特征在于,所述拦截待分发的广播消息,包括:在ActivityManagerNative的实现内拦截所述广播消息或在ContextImpl类的实现内拦截所述广播消息。3.根据权利要求1所述的Android插件框架支持新增广播接收者的方法,其特征在于,所述获取插件升级操作导致的接收所述广播消息的目标广播接收者列表,包括:判断是否有插件升级,若是,获取升级插件;针对每个升级插件,解析所述升级插件包配置文件Manifest,获取广播接收者列表;从所述广播接收者列表获取新增广播接收者列表;通过匹配操作获取需要接收所述广播消息的目标广播接收者列表。4.根据权利要求3所述的Android插件框架支持新增广播接收者的方法,其特征在于,所述从所述广播接收者列表获取新增广播接收者列表,包括:通过系统服务PackageManagerService检测来获取所述广播接收者列表中的新增广播接收者列表。5.根据权利要求3所述的Android插件框架支持新增广播接收者的方法,其特征在于,所述通过匹配操作获取需要接收所述广播消息的目标广播接收者列表的步骤如下:解析新增广播接收者列表中的每个新增广播接收者的IntentFilter,生成过滤器;通过过滤器循环遍历,获取匹配成功的所述目标广播接收者列表。6.根据权利要求1所述的Android插件框架支持新增广播接收者的方法,其特征在于,所述运行目标广播接收者对应的升级插件针对所述广播消息的处理函数,包括:通过插件类...

【专利技术属性】
技术研发人员:黄定磊
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1