有序广播处理方法、装置和终端设备与流程

文档序号:12698604阅读:335来源:国知局
有序广播处理方法、装置和终端设备与流程

本发明实施例涉及计算机技术,尤其涉及一种有序广播处理方法、装置和终端设备。



背景技术:

广播是一种被广泛运用的在应用程序之间进行信息传输的机制,以安卓操作系统为例,其通过广播(Broadcast)来实现应用程序间数据的传输和共享。典型的,如安卓自带的短信、电话等广播。

在安卓系统中,广播发送者通过调用sendBroadcast函数进行广播消息的发送,广播接收者通过调用registerReceiver函数在管理模块中进行广播接收器(BroadcastReceiver)的注册,并定义自身感兴趣的广播消息,由此来实现对相应的广播消息的接收。

现有技术中,广播处理机制存在的缺陷,使得广播处理效率低下,系统资源消耗过多且稳定性差。



技术实现要素:

本发明提供了一种有序广播处理方法、装置和终端设备,提高了广播处理效率,降低了系统资源消耗,增加了系统的稳定性。

第一方面,本发明实施例提供了一种有序广播处理方法,包括:

获取广播队列中当前发送的广播消息;

依据所述广播消息确定对应的广播接收者的类型;

如果所述广播接收者的类型为预设类型,则调用发送所述广播消息的接口,将所述广播消息发送至预设类型的广播接收者。

第二方面,本发明实施例还提供了一种有序广播处理装置,包括:

获取模块,用于获取广播队列中当前发送的广播消息;

确定模块,用于依据所述广播消息确定对应的广播接收者的类型;

发送模块,用于如果所述广播接收者的类型为预设类型,则调用发送所述广播消息的接口,将所述广播消息发送至预设类型的广播接收者。

第三方面,本发明实施例还提供了一种终端设备,包括:处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:

获取广播队列中当前发送的广播消息;

依据所述广播消息确定对应的广播接收者的类型;

如果所述广播接收者的类型为预设类型,则调用发送所述广播消息的接口,将所述广播消息发送至预设类型的广播接收者。

本发明实施例提供的技术方案,解决了现有的广播机制存在的缺陷,提高了广播处理效率,降低了系统资源消耗,使得系统稳定性增加。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1是本发明实施例提供的一种有序广播处理方法的流程图;

图2是本发明实施例提供的另一种有序广播处理方法的流程图;

图3是本发明实施例提供的另一种有序广播处理方法的流程图;

图4是本发明实施例提供的一种有序广播处理装置的结构框图;

图5是本发明实施例提供的一种终端设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

图1是本发明实施例提供的一种有序广播处理方法的流程图,本实施例可适用于对有序广播进行控制处理的情况,该方法可以由本发明实施例提供的终端设备来执行,该终端设备的有序广播处理装置可采用软件以及硬件的方式实现,如图1所示,本实施例提供的具体方案如下:

S101、获取广播队列中当前发送的广播消息。

在广播处理过程中,广播发送者的服务进程通过调用广播发送函数(如sendBroadcast函数)将广播消息发送至管理模块(如ActivityManagerService,活动管理服务),管理模块接收到该广播消息后将其放入广播队列,管理模块通过进程通信机制(如Binder进程通信机制)将广播队列中的广播消息发送至符合接收条件的广播接收者。

广播机制中,广播消息指的是系统或者应用程序在运行过程中发送的,用于系统以及应用程序之间传输的信息,示例性的,广播消息可以是系统启动广播消息、短信类广播消息、电话类广播消息或者三方应用类广播消息等。广播发送者发送广播消息的过程和广播接收者接收广播消息的过程是异步操作过程,广播发送者和广播接收者通过管理模块实现低耦合的关系匹配,即广播发送者在发送广播消息后并不关心具体的广播接收者是谁,广播接收者只接受自己感兴趣的广播消息,也不关心具体的广播发送者。

在一个实施例中,管理模块接收广播发送者发送的广播消息并放入广播队列中,管理模块对广播队列中的广播消息依次进行发送。其中,根据广播发送方式的不同可将广播消息分为普通广播和有序广播。普通广播被管理模块发出后,广播接收者对该广播消息的接收是无序的,而有序广播被管理模块发出后,广播接收者按照顺序先后依次接收,即第一个广播接收者接收到广播消息并处理完毕后,第二个广播接收者才能开始接收并处理该广播消息,依次类推。本实施例方案可限定在对有序广播进行控制处理的情形。当采取有序广播的发送方式时,由于广播接收者需要按次序顺序接收,使得某些想要快速接收处理该广播消息的广播接收者不得不等待之前的广播接收者处理完毕后再处理,由此导致了需要快速响应广播消息的广播接收者往往无法第一时间对广播消息进行响应,所以广播处理效率低下。

在一个实施例中,对广播队列中当前发送的广播消息进行获取,由前述内容可知,当一个有序广播被发出后,需要对应的所有的广播接收者全部处理完毕并反馈给维护广播队列的管理模块反馈结果后,管理模块根据该反馈结果确定该已发出的有序广播处理完毕,进而开始发送广播队列中的下一个广播消息。该实施例中,当前发送的广播消息可以是发出的广播消息也可以是收到前一个广播消息的反馈结果后正在准备发送的广播消息。

S102、依据所述广播消息确定对应的广播接收者的类型。

在一个实施例中,广播发送者发送广播消息至管理模块的过程可表示如下(以计数器应用程序发送一个广播消息为例):

//创建一个广播消息

Intent intent=new Intent(BROADCAST_COUNTER_ACTION);

//传递计数器参数及对应的计数值

intent.putExtra(COUNTER_VALUE,counter);

//发送广播消息

sendBroadcast(intent)

广播接收者在接收广播消息时,管理模块可以对广播接收器的注册指令进行获取,该广播接收器的注册指令由广播接收者发出。通常,广播接收者通过进程通信机制向管理模块注册(订阅)想要接收的广播消息。广播接收者的服务进程通过调用registerReceiver函数在管理模块中进行广播接收器的注册,同时定义自身感兴趣的广播消息,管理模块在发送广播队列中的广播消息时,依据广播接收者的注册情况,将该广播消息发送至对其进行订阅了的广播接收者相应的消息循环队列中,广播接收者接收到该广播消息后回调注册的广播接收器中的接收方法(如onReceive方法)来执行相应的功能以对接收到的广播消息进行处理。

以接收计数器发送的广播消息为例,广播接收者接收广播消息的注册过程可表示为:

//定义一个感兴趣的广播消息(订阅广播消息)

IntentFilter counterActionFilter=

new IntentFilter(CounterService.BROADCAST_COUNTER_ACTION);

//进行广播接收器的注册

registerReceiver(counterActionReceiver,counterActionFilter)

当该广播发送者发送的广播消息(BROADCAST_COUNTER_ACTION)由管理模块发出后,由于广播接收者注册了对应的接收该广播消息的广播接收器,该广播消息即会被对应的广播接收者接收、处理。

在一个实施例中,依据广播消息确定对应的广播接收者的类型,一个广播消息可以对应多个广播接收者,在确定广播接收者的类型之前,还包括对广播接收者的类型进行分类,并将分类结果记录在数据库中。

在一个实施例中,可将广播接收者的类型划分确定为系统类型、第三方应用平台类型和未知类型等。具体的,该分类可依据广播发送者和广播接收者对应的应用程序安装后进行自动分类,也可以接收分类指令,依据分类指令对广播发送者的类型进行划分,还可以是对系统中对已安装的应用程序进行自动分类,分类完毕后记录在数据库中以用于作为后续的比对依据。

在一个实施例中,可根据广播接收者接收到的广播消息的频率进行广播接收者类型的划分。示例性的,如果广播接收者接收广播消息的频率大于第一预设频率(可以是100次/天),则将所述广播接收者的类型确定为重要类型;如果广播接收者接收广播消息的频率大于第二预设频率(可以是50次/天),且小于或等于所述第一预设频率,则将所述广播发送者的类型确定为中等类型;如果广播接收者接收广播消息的频率小于或等于第二预设频率,则将所述广播发送者的类型确定为普通类型。

S103、如果所述广播接收者的类型为预设类型,则调用发送所述广播消息的接口,将所述广播消息发送至预设类型的广播接收者。

在一个实施例中,当广播接收者的类型被划分为系统类型、第三方应用平台类型和未知类型时,该预设类型可以是系统类型的广播接收者,在另一个实施例中,当广播接收者的类型被划分为重要类型、中等类型和普通类型时,该预设类型可以是重要类型的广播接收者。

当确定出的广播接收者的类型为预设类型时,调用发送所述广播消息的接口,将所述广播消息发送至预设类型的广播接收者。在一个实施例中,将所述广播消息发送至预设类型的广播接收者包括:将所述广播消息发送至预设类型的广播接收者的进程中,以使该广播接收者对该广播消息进行处理。

本实施例提供的技术方案,通过获取广播队列中当前发送的广播消息,依据所述广播消息确定对应的广播接收者的类型,如果所述广播接收者的类型为预设类型,则调用发送所述广播消息的接口,将所述广播消息发送至预设类型的广播接收者,解决了现有的有序广播发送过程中无法针对特定类型的广播接收者让其及时进行广播消息处理带来的缺陷,提高了广播处理效率,使得预设类型的广播接收者可以及时的对广播消息进行响应。

图2是本发明实施例提供的另一种有序广播处理方法的流程图,在上述实施例的基础上,可选的,所述如果所述广播接收者的类型为预设类型,则调用发送所述广播消息的接口,将所述广播消息发送至预设类型的广播接收者包括:

如果所述广播接收者的类型为预设类型,则确定所述预设类型的广播接收者的数量,依据所述数量调用相应次数的发送所述广播消息的接口,将所述广播消息依次和/或同步发送至对应的广播接收者。

基于上述优化,如图2所示,本实施例提供的技术方案具体如下:

S201、获取广播队列中当前发送的广播消息。

S202、依据所述广播消息确定对应的广播接收者的类型。

S203、如果所述广播接收者的类型为预设类型,则确定所述预设类型的广播接收者的数量,依据所述数量调用相应次数的发送所述广播消息的接口,将所述广播消息依次和/或同步发送至对应的广播接收者。

在一个实施例中,调用发送所述广播消息的接口,将所述广播消息发送至预设类型的广播接收者包括:生成反馈参数,依据所述反馈参数调用发送所述广播消息的接口,将所述广播消息发送至预设类型的广播接收者。由于有序广播队列中各个广播接收者需要依次对广播消息进行处理,并将处理结果反馈后进行下一广播接收者的处理。该实施例中,通过生成反馈参数(可以理解为系统生成的虚假参数)用于替代原有的处理结果,直接调用发送广播消息的接口对该广播消息进行发送而不必等待当前广播接收者反馈处理结果后再依据处理结果调用发送广播消息的接口进行广播消息的发送。由此,使得预设类型(如重要类型的广播接收者或系统类型的广播接收者)的广播接收者可以在第一时间接收到广播消息而无需排队等待。

在一个实施例中,对广播消息对应的广播接收者进行遍历,在确定广播接收者类型的同时,确定满足预设类型的广播接收者的数目,依次和/或同步调用发送广播消息的接口将广播消息发送至对应的广播接收者,使得多个预设类型的广播接收者可以及时或同时接收并处理广播消息,极大的提高了广播消息的处理效率。

本实施例提供了一种有序广播处理方法,解决了现有的广播机制存在的缺陷,提高了广播处理效率,降低了系统资源消耗,使得系统稳定性增加。

图3是本发明实施例提供的另一种有序广播处理方法的流程图,在上述实施例的基础上,可选的,所述将所述广播消息发送至预设类型的广播接收者包括:

创建广播消息对象,设置所述广播消息的标识值,并将所述标识值添加至所述广播消息中,将包含所述标识值的广播消息发送至预设类型的广播接收者;

对发送的包含所述标识值的广播消息的处理时间进行监控,如果所述处理时间大于预设监控时间,则触发超时响应机制。

基于上述优化,如图3所示,本实施例提供的技术方案具体如下:

S301、获取广播队列中当前发送的广播消息。

S302、依据所述广播消息确定对应的广播接收者的类型。

S303、如果所述广播接收者的类型为预设类型,则调用发送所述广播消息的接口,创建广播消息对象,设置所述广播消息的标识值,并将所述标识值添加至所述广播消息中,将包含所述标识值的广播消息发送至预设类型的广播接收者。

在一个实施例中,该标识值可以是哈希值,每个哈希值对应一个唯一的广播消息。通过将标识值添加到广播消息的方式对广播消息进行唯一性识别、确认。

S304、对发送的包含所述标识值的广播消息的处理时间进行监控,如果所述处理时间大于预设监控时间,则触发超时响应机制。

在一个实施例中,管理模块对广播消息的发送设置了超时响应机制,即广播消息发送较慢则触发该超时响应机制,进而引起应用程序的退出。本步骤中,该预设时间可以是系统默认的时间,也可以进行自定义设置的时间。示例性的,当发送出包含标识值的广播消息后开始进行计时,若在预设时间未接收到该广播消息被处理完毕的反馈结果,则触发超时响应机制,避免了通过调用接口发送出的广播消息处理时间过长造成的广播效率低下,引起系统崩溃的问题。

在对发送的包含所述标识值的广播消息的处理时间进行监控之后,还包括:依据预设类型的广播接收者处理所述广播消息的反馈结果,取消对所述广播消息的处理时间的监控,所述反馈结果包含所述广播消息的标识值。如果接受到广播接收者的反馈结果,则依据反馈结果中的标识值确定对应的监控的广播消息,并解除对该广播消息的监控。

本实施例提供了一种有序广播处理方法,避免了广播消息处理超时造成的系统安全隐患,对前述方案进行了进一步完善,提高了系统安全性。

图4是本发明实施例提供的一种有序广播处理装置的结构框图,该装置用于执行上述实施例提供的有序广播处理方法,具备执行方法相应的功能模块和有益效果。如图4所示,该装置具体包括:获取模块401、确定模块402、发送模块403。

其中,获取模块401,用于获取广播队列中当前发送的广播消息;

确定模块402,用于依据所述广播消息确定对应的广播接收者的类型;

发送模块403,用于如果所述广播接收者的类型为预设类型,则调用发送所述广播消息的接口,将所述广播消息发送至预设类型的广播接收者。

本实施例提供的技术方案,解决了现有的广播机制存在的缺陷,提高了广播处理效率,降低了系统资源消耗,使得系统稳定性增加。

可选的,该装置还包括:分类模块404,用于在所述依据所述广播消息确定对应的广播接收者的类型之前,对广播接收者的类型进行分类,并将分类结果记录在数据库中。

可选的,所述发送模块403具体用于:生成反馈参数,依据所述反馈参数调用发送所述广播消息的接口,将所述广播消息发送至预设类型的广播接收者。

可选的,所述发送模块403具体用于:如果所述广播接收者的类型为预设类型,则确定所述预设类型的广播接收者的数量,依据所述数量调用相应次数的发送所述广播消息的接口,将所述广播消息依次和/或同步发送至对应的广播接收者。

可选的,所述发送模块具体包括:标识值设置单元4031,用于创建广播消息对象,设置所述广播消息的标识值,并将所述标识值添加至所述广播消息中;发送单元4032,用于将包含所述标识值的广播消息发送至预设类型的广播接收者;监控单元4033,用于对发送的包含所述标识值的广播消息的处理时间进行监控,如果所述处理时间大于预设监控时间,则触发超时响应机制。

可选的,所述监控单元4033还用于:在所述对发送的包含所述标识值的广播消息的处理时间进行监控之后,依据预设类型的广播接收者处理所述广播消息的反馈结果,取消对所述广播消息的处理时间的监控,所述反馈结果包含所述广播消息的标识值。

本实施例在上述各实施例的基础上提供了一种终端设备,该终端设备可以包括本发明提供的有序广播处理装置。图5是本发明实施例提供的一种终端设备的结构示意图,如图5所示,该终端设备可以包括:存储器501、中央处理器(Central Processing Unit,CPU)502、外设接口503、RF(Radio Frequency,射频)电路505、音频电路506、扬声器511、电源管理芯片508、输入/输出(I/O)子系统509、触摸屏512、其他输入/控制设备510以及外部端口504,这些部件通过一个或多个通信总线或信号线507来通信。

应该理解的是,图示终端设备500仅仅是终端设备的一个范例,并且终端设备500可以具有比图中所示出的更多的或者更少的部件,可以组合两个或更多的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理以及专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。

下面就本实施例提供的用于多开应用的权限管理的终端设备进行详细的描述,该终端设备以智能手机为例。

存储器501,所述存储器501可以被CPU502、外设接口503等访问,所述存储器501可以包括高速随机存取存储器,还可以包括非易失性存储器,例如一个或多个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

外设接口503,所述外设接口503可以将设备的输入和输出外设连接到CPU502和存储器501。

I/O子系统509,所述I/O子系统509可以将设备上的输入输出外设,例如触摸屏512和其他输入/控制设备510,连接到外设接口503。I/O子系统509可以包括显示控制器5091和用于控制其他输入/控制设备510的一个或多个输入控制器5092。其中,一个或多个输入控制器5092从其他输入/控制设备510接收电信号或者向其他输入/控制设备510发送电信号,其他输入/控制设备510可以包括物理按钮(按压按钮、摇臂按钮等)、拨号盘、滑动开关、操纵杆、点击滚轮。值得说明的是,输入控制器5092可以与以下任一个连接:键盘、红外端口、USB接口以及诸如鼠标的指示设备。

触摸屏512,所述触摸屏512是用户终端与用户之间的输入接口和输出接口,将可视输出显示给用户,可视输出可以包括图形、文本、图标、视频等。

I/O子系统509中的显示控制器5091从触摸屏512接收电信号或者向触摸屏512发送电信号。触摸屏512检测触摸屏上的接触,显示控制器5091将检测到的接触转换为与显示在触摸屏512上的用户界面对象的交互,即实现人机交互,显示在触摸屏512上的用户界面对象可以是运行游戏的图标、联网到相应网络的图标等。值得说明的是,设备还可以包括光鼠,光鼠是不显示可视输出的触摸敏感表面,或者是由触摸屏形成的触摸敏感表面的延伸。

RF电路505,主要用于建立手机与无线网络(即网络侧)的通信,实现手机与无线网络的数据接收和发送。例如收发短信息、电子邮件等。具体地,RF电路505接收并发送RF信号,RF信号也称为电磁信号,RF电路505将电信号转换为电磁信号或将电磁信号转换为电信号,并且通过该电磁信号与通信网络以及其他设备进行通信。RF电路505可以包括用于执行这些功能的已知电路,其包括但不限于天线系统、RF收发机、一个或多个放大器、调谐器、一个或多个振荡器、数字信号处理器、CODEC(COder-DECoder,编译码器)芯片组、用户标识模块(Subscriber Identity Module,SIM)等等。

音频电路506,主要用于从外设接口503接收音频数据,将该音频数据转换为电信号,并且将该电信号发送给扬声器511。

扬声器511,用于将手机通过RF电路505从无线网络接收的语音信号,还原为声音并向用户播放该声音。

电源管理芯片508,用于为CPU502、I/O子系统及外设接口所连接的硬件进行供电及电源管理。

本发明实施例提供的CPU502可执行如下操作:

获取广播队列中当前发送的广播消息;

依据所述广播消息确定对应的广播接收者的类型;

如果所述广播接收者的类型为预设类型,则调用发送所述广播消息的接口,将所述广播消息发送至预设类型的广播接收者。

可选的,在所述依据所述广播消息确定对应的广播接收者的类型之前,还包括:对广播接收者的类型进行分类,并将分类结果记录在数据库中。

可选的,所述调用发送所述广播消息的接口,将所述广播消息发送至预设类型的广播接收者包括:生成反馈参数,依据所述反馈参数调用发送所述广播消息的接口,将所述广播消息发送至预设类型的广播接收者。

可选的,所述如果所述广播接收者的类型为预设类型,则调用发送所述广播消息的接口,将所述广播消息发送至预设类型的广播接收者包括:如果所述广播接收者的类型为预设类型,则确定所述预设类型的广播接收者的数量,依据所述数量调用相应次数的发送所述广播消息的接口,将所述广播消息依次和/或同步发送至对应的广播接收者。

可选的,所述将所述广播消息发送至预设类型的广播接收者包括:创建广播消息对象,设置所述广播消息的标识值,并将所述标识值添加至所述广播消息中,将包含所述标识值的广播消息发送至预设类型的广播接收者;对发送的包含所述标识值的广播消息的处理时间进行监控,如果所述处理时间大于预设监控时间,则触发超时响应机制。

可选的,在所述对发送的包含所述标识值的广播消息的处理时间进行监控之后,还包括:依据预设类型的广播接收者处理所述广播消息的反馈结果,取消对所述广播消息的处理时间的监控,所述反馈结果包含所述广播消息的标识值。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1