一种广播的处理方法、装置及计算机系统制造方法及图纸

技术编号:26650442 阅读:16 留言:0更新日期:2020-12-09 00:45
本申请公开了一种广播的处理方法、装置及计算机系统,所述方法包括获取目标广播对应的接收器;按照预设顺序,判断每一所述对应的接收器是否在接收器黑名单中,所述接收器黑名单用于记录发生过无响应的接收器;派遣不在所述接收器黑名单的所述接收器处理所述目标广播,通过将无响应的接收器记录于接收器黑名单中,可在处理后续的广播时跳过发生过无响应的接收器,避免同一接收器多次发生无响应导致广播队列瘫痪,提高了系统的鲁棒性。

【技术实现步骤摘要】
一种广播的处理方法、装置及计算机系统
本专利技术涉及计算机
,尤其涉及一种广播的处理方法、装置及计算机系统。
技术介绍
Android系统framework层中,非常注重解耦。在framework层中,广播采取Intent发送,对广播进行模糊匹配action(字符串),然后向匹配出来的接收者发送以完成解耦。广播的组织方式是根据发送广播的Intent生成广播记录(BroadcastRecord),然后将广播记录保存在广播记录队列中,由AMS处理服务与广播的特定线程去依次处理广播记录队列中的广播记录。每个广播记录可以有一个或多个接收者(BroadcastReceiver),接收者可以注册相应的接收器,每个接收者在服务端被一个BpBinder代理,对它的派遣将通过binder调用,然后再调用到应用侧的BroadcastReceiver。在有序广播中,这个过程是完全串行的,前一个receiver被调用,处理完毕后返回,AMS接收到返回值才可以派遣给下一个receiver。然而,现有的有序广播机制存在如下缺陷:1、串行派遣将应用的问题扩大了范围,变成了系统稳定性问题;由于广播接收器的注册者可能是系统、也可能是系统应用、甚至可能是第三方应用。而当涉及到第三方应用时,接收器的质量上就不再可控,必须考虑到各种恶劣的代码,甚至恶意攻击的情况。在Android系统的广播机制中,系统的广播接收器和第三方应用的广播接收器是在一个阻塞队列处理的,这样问题就非常大:当第三方的广播接收器出现无响应(ANR)时,整个广播接收器序列就都会阻塞。例如,某个循环派发的广播,其某次派发的过程中某个第三方应用的接收器发生了无响应,耗费了很长时间,导致该广播的接收队列发生阻塞。而当该广播下一次派发时,该接收器再次发生无响应,导致再次阻塞接收者队列。这样的情况重复数次,将会导致整个广播记录队列发生堵塞。而当广播记录队列发生堵塞时,这个第三方应用的接收器的问题就扩散到了整个系统,整个Android系统的大量由广播调用的主要功能将会瘫痪,例如亮灭屏、接打电话、时间更新等,造成整机卡顿、无响应、广播丢失等问题。2、有序广播的完全串行派遣造成大量时间浪费;有序广播是按android系统的IntentFilter中的优先级来划分广播的顺序。而如果开发者没有在代码逻辑设置接收器的优先级或将每个接收器设置为相等,那么这些优先级相等的接收器将按应用安装的顺序/注册顺序进行串行派发。这样就造成了不存在逻辑顺序的接收器被强行按不存在的先后顺序进行了派发、被强行安排了逻辑上的先后处理顺序,导致了时间上的巨大浪费。
技术实现思路
为了解决现有技术的不足,本专利技术的主要目的在于提供一种广播的处理方法、装置及计算机系统,以解决有序广播的串行派遣带来的系统稳定性问题及时间浪费。为了达到上述目的,第一方面本专利技术提供了一种广播的处理方法,所述方法包括:获取目标广播对应的接收器;按照预设顺序,判断每一所述对应的接收器是否在接收器黑名单中,所述接收器黑名单用于记录发生过无响应的接收器;派遣不在所述接收器黑名单的所述接收器处理所述目标广播。在一些实施例中,接收器包括对应的优先级,所述派遣不在所述接收器黑名单的所述接收器处理所述目标广播包括:派遣优先级相同的所述接收器并行处理所述目标广播。在一些实施例中,所述按照预设顺序,判断每一所述对应的接收器是否在接收器黑名单中包括:按照所述优先级从高到低的顺序,判断每一所述对应的接收器是否在接收器黑名单中。在一些实施例中,所述方法包括:整合并行处理的所述接收器对所述目标广播的处理结果。在一些实施例中,每一接收器包括对应的进程,所述方法包括:当并行处理的所述接收器的进程未启动时,并发启动并行处理的所述接收器的进程。在一些实施例中,所述方法包括:当派遣的所述接收器无响应时,将无响应的所述接收器存入所述接收器黑名单。在一些实施例中,所述当派遣的所述接收器无响应时,将无响应的派遣的所述接收器存入所述接收器黑名单包括:当派遣的所述接收器无响应时,生成无响应的所述接收器对应的无响应记录;将所述无响应记录的数量超过预设数量阈值的接收器存入接收器黑名单。第二方面,本申请公开了一种广播的处理装置,所述装置包括:获取模块,用于获取目标广播对应的接收器;判断模块,用于按照预设顺序,判断每一所述对应的接收器是否在接收器黑名单中,所述接收器黑名单用于记录发生过无响应的接收器;处理模块,用于派遣不在所述接收器黑名单的所述接收器处理所述目标广播。9、根据权利要求8所述的装置,其特征在于,接收器包括对应的优先级,所述处理模块还可用于派遣优先级相同的所述接收器并行处理所述目标广播。第三方面,本申请公开了一种计算机系统,所述系统包括:一个或多个处理器;以及与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行如下操作:获取目标广播对应的接收器;按照预设顺序,判断每一所述对应的接收器是否在接收器黑名单中,所述接收器黑名单用于记录发生过无响应的接收器;派遣不在所述接收器黑名单的所述接收器处理所述目标广播。本专利技术实现的有益效果为:本申请提供了一种广播的处理方法,所述方法包括:获取目标广播对应的接收器;按照预设顺序,判断每一所述对应的接收器是否在接收器黑名单中,所述接收器黑名单用于记录发生过无响应的接收器;派遣不在所述接收器黑名单的所述接收器处理所述目标广播,通过将无响应的接收器记录于接收器黑名单中,可在处理后续的广播时跳过发生过无响应的接收器,避免同一接收器多次发生无响应导致广播队列瘫痪,提高了系统的鲁棒性;进一步地,本申请提出了派遣优先级相同的所述接收器并行处理所述目标广播,以允许优先级相同的接收器同时处理同一广播,避免了不存在逻辑顺序的接收器被强行按不存在的先后顺序进行派发、被强行安排逻辑上的先后处理顺序,节省了大量时间。本专利技术所有产品并不需要具备上述所有效果。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本申请实施例提供的未响应接收器的筛查流程图;图2是本申请实施例提供的方法流程图;图3是本申请实施例提供的装置结构图;图4是本申请实施例提供的计算机系统结构图;图5是本申请实施例提供的接收器处理流程图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本文档来自技高网
...

【技术保护点】
1.一种广播的处理方法,其特征在于,所述方法包括:/n获取目标广播对应的接收器;/n按照预设顺序,判断每一所述对应的接收器是否在接收器黑名单中,所述接收器黑名单用于记录发生过无响应的接收器;/n派遣不在所述接收器黑名单的所述接收器处理所述目标广播。/n

【技术特征摘要】
1.一种广播的处理方法,其特征在于,所述方法包括:
获取目标广播对应的接收器;
按照预设顺序,判断每一所述对应的接收器是否在接收器黑名单中,所述接收器黑名单用于记录发生过无响应的接收器;
派遣不在所述接收器黑名单的所述接收器处理所述目标广播。


2.根据权利要求1所述的方法,其特征在于,接收器包括对应的优先级,所述派遣不在所述接收器黑名单的所述接收器处理所述目标广播包括:
派遣优先级相同的所述接收器并行处理所述目标广播。


3.根据权利要求2所述的方法,其特征在于,所述按照预设顺序,判断每一所述对应的接收器是否在接收器黑名单中包括:
按照所述优先级从高到低的顺序,判断每一所述对应的接收器是否在接收器黑名单中。


4.根据权利要求2或3所述的方法,其特征在于,所述方法包括:
整合并行处理的所述接收器对所述目标广播的处理结果。


5.根据权利要求2或3所述的方法,其特征在于,每一接收器包括对应的进程,所述方法包括:
当并行处理的所述接收器的进程未启动时,并发启动并行处理的所述接收器的进程。


6.根据权利要求1-3任一所述的方法,其特征在于,所述方法包括:
当派遣的所述接收器无响应时,将无响应的所述接收器存入所述接收器黑名单。

【专利技术属性】
技术研发人员:师晨来
申请(专利权)人:苏宁智能终端有限公司
类型:发明
国别省市:江苏;32

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

1