广播接收者队列调整方法、装置和终端设备与流程

文档序号:12801810阅读:186来源:国知局
广播接收者队列调整方法、装置和终端设备与流程

本发明实施例涉及计算机技术,尤其涉及一种广播接收者队列调整方法、装置和终端设备。



背景技术:

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

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

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



技术实现要素:

本发明提供了一种广播接收者队列调整方法、装置和终端设备,提高了广播处理效率,降低了系统资源消耗,使得系统稳定性增加。

第一方面,本发明实施例提供了一种广播接收者队列调整方法,包括:

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

确定和所述待发送的广播消息对应的广播接收者;

遍历所述广播接收者对应的进程,将进程活跃度满足预设条件的广播接收者设置在广播接收队列的前端。

第二方面,本发明实施例还提供了一种广播接收者队列调整装置,包括:

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

接收者确定模块,用于确定和所述待发送的广播消息对应的广播接收者;

进程遍历模块,用于遍历所述广播接收者对应的进程;

队列调整模块,用于将进程活跃度满足预设条件的广播接收者设置在广播接收队列的前端。

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

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

确定和所述待发送的广播消息对应的广播接收者;

遍历所述广播接收者对应的进程,将进程活跃度满足预设条件的广播接收者设置在广播接收队列的前端。

本发明实施例提供的技术方案,通过获取广播发送队列中待发送的广播消息,确定和所述待发送的广播消息对应的广播接收者,遍历所述广播接收者对应的进程,将进程活跃度满足预设条件的广播接收者设置在广播接收队列的前端,解决了现有的广播接收机制处理效率低下的问题,提高了广播处理效率,降低了系统资源消耗,使得系统稳定性增加。

附图说明

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

图1是本发明实施例提供的一种广播接收者队列调整方法的流程图;

图2是本发明实施例提供的另一种广播接收者队列调整方法的流程图;

图3是本发明实施例提供的另一种广播接收者队列调整方法的流程图;

图4是本发明实施例提供的一种广播接收者队列调整装置的结构框图;

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

具体实施方式

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

图1是本发明实施例提供的一种广播接收者队列调整方法的流程图,本实施例可适用于对广播接收者队列进行调整的情况,该方法可以由本发明实施例提供的终端设备来执行,该终端设备的广播接收者队列调整装置可采用软件和/或硬件的方式实现,如图1所示,本实施例提供的具体方案如下:

s101、获取广播发送队列中待发送的广播消息。

在广播处理过程中,广播发送者的服务进程通过调用广播发送函数(如sendbroadcast函数)将广播消息发送至管理模块(如activitymanagerservice,活动管理服务),管理模块接收到该广播消息后将其放入广播发送队列,管理模块通过进程通信机制(如binder进程通信机制)将广播发送队列中的广播消息发送至符合接收条件的广播接收者。其中,该广播发送队列可以是串行广播发送队列也可以是并行广播发送队列。

在一个实施例中,广播消息指的是系统或者应用程序在运行过程中发送的,用于系统和/或应用程序之间传输的信息,示例性的,广播消息可以是系统启动广播消息、短信类广播消息、电话类广播消息或者三方应用类广播消息等。广播发送队列由管理模块生成、管理,待发送的广播消息在本步骤可解释为广播发送队列中当前正在处理的即将发送的广播消息。

s102、确定和待发送的广播消息对应的广播接收者。

其中,确定出的和待发送的广播消息对应的广播接收者指符合接收条件的广播接收者。在一个实施例中,该广播接收者为通过进程通信机制向管理模块注册(订阅)了接收该广播消息的广播接收者。具体的,广播接收者的服务进程通过调用registerreceiver函数在管理模块中进行广播接收器的注册,同时定义自身感兴趣的广播消息,管理模块在发送广播发送队列中的广播消息时,依据广播接收者的注册情况,将该广播消息发送至对其进行订阅了的广播接收者相应的消息循环队列中,广播接收者接收到该广播消息后回调注册的广播接收器中的接收方法(如onreceive方法)来执行相应的功能以对该广播消息进行处理。

每一个广播消息可以存在一个或多个对应的广播接收者,示例性的,广播发送者(如应用a)发送一个广播消息至管理模块,管理模块可将该广播消息发给一个(如应用b)或多个(如应用c、应用d、应用e等)对应的广播接收者,对应的广播接收者的数量取决于注册接收该广播消息的广播接收者的数量。

s103、遍历广播接收者对应的进程,将进程活跃度满足预设条件的广播接收者设置在广播接收队列的前端。

广播机制中,广播发送者发送广播消息的过程和广播接收者接收广播消息的过程是异步操作过程,广播发送者和广播接收者通过管理模块实现低耦合的关系匹配。其中,根据广播发送方式的不同可将广播消息分为普通广播消息和有序广播消息。普通广播消息被管理模块发出后,广播接收者对该广播消息的接收是无序的,而有序广播消息被管理模块发出后,广播接收者按照顺序先后依次接收,即第一个广播接收者接收到广播消息并处理完毕后,第二个广播接收者才能开始接收并处理该广播消息,依次类推。

针对有序广播而言,广播消息对应的广播接收者无法同时接收到该广播消息,广播接收者需要根据接收次序依次接收、处理广播消息。在一个实施例中,多个广播接收者接收、处理广播消息的次序采用广播接收者队列的形式予以体现。在系统默认情况下,该广播队列中广播接收者接收广播消息的次序可以依据广播接收者的默认的参数确定,还可以是根据系统预设的默认条件确定,无法根据系统在具体运行过程中的运行参量进行广播接收者队列的调整。由此,广播接收者需根据广播接收者队列依次接收广播消息使得不同广播接收者接收广播消息的时间先后不同,导致一些广播接收者无法及时接收广播消息,使得重要的广播消息得不到及时处理。示例性的,若系统当前界面运行的应用程序中存在待发送的广播消息的广播接收者,且该广播接收者位于广播接收者队列的尾端,则发送该广播消息后,系统当前界面运行的应用程序无法第一时间对该广播消息进行接收、处理,降低了当前界面中的应用程序对该广播消息的响应效率。针对普通广播而言,由于广播接收者接收广播消息的无序性,对某一特定广播接收者来说,其也无法第一时间接收到该广播,而是依赖于系统的运行效率。

本步骤中,在s102确定出和广播消息对应的广播接收者后,遍历广播接收者对应的进程,其中广播接收者在运行过程中会启动相应的进程,进程指系统中的程序关于某数据集合上的运行活动,是系统进行资源分配和调度的基本单位,是系统结构的组成基础,为应用程序的基本执行实体。其中,进程活跃度表征了广播接收者运行的进程的状态,其中,可以是广播接收者当前运行过程中对应的进程的状态,还可以是广播接收者对应的进程在历史运行过程中的状态。将进程活跃度满足预设条件的广播接收者设置在广播接收队列的前端,对广播接收者队列进行了适应性调整,使得一些进程活跃度满足预设条件的广播接收者被排列在广播接收者队列前端得以尽快接收到广播消息。在一个实施例中,该进程活跃度指进程是否在系统中处于运行状态,该预设条件指进程在系统中正在运行。具体的,将进程活跃度满足预设条件的广播接收者设置在广播接收队列的前端包括:将系统当前正在运行的进程对应的广播接收者设置在广播接收队列的前端。即,通过判断广播接收者队列中排队的广播接收者对应的进程是否在系统中处于运行状态来确定是否将广播接收者设置在广播接收者队列前端。系统当前正在运行的进程为已经启动的实时执行的进程,通过将对应的广播接收者设置在队列靠前的位置可以使其第一时间快速得到广播消息并进行即使处理,也不会使某些处于非运行状态的广播接收者被唤醒。在一个实施例中,将进程活跃度满足预设条件的广播接收者设置在广播接收队列的前端,可以是在遍历广播接收者对应的进程时,当确定该进程为运行状态后,将该广播接收者从广播接收者队列中移除,插入到广播队列的队头,当再次确定出广播接收者对应的进程处于运行状态后,执行相同操作,将确定出的广播接收者设置在调整后的新的广播接收者队列的队头。在一个实施例中,还可以是遍历广播接收者对应的进程,对正在运行的进程对应的广播接收者进行记录,当遍历完毕后,统一将确定出的广播接收者插入到队列前端,具体的,可以是依据遍历过程中确定出的广播接收者的顺序依次插入,还可是随机插入到队列前端。在另一实施例中,该广播接收者队列的前端可以是广播接收者队列的预设位置,该预设位置可以是广播接收者队列中排序在前20%的位置。

本实施例提供了一种广播接收者队列调整方法,通过遍历待发送的广播消息的广播接收者对应的进程,将进程活跃度满足预设条件的广播接收者设置在广播接收队列的前端,形成新的广播接收者队列(可以是创建新的广播接收者队列也可以是修改原有的有序广播接收者队列),提高了广播处理效率,降低了系统资源消耗,使得系统稳定性增加。

图2是本发明实施例提供的另一种广播接收者队列调整方法的流程图,在上述实施例的基础上,可选的,将系统当前正在运行的进程对应的广播接收者设置在广播接收队列的前端包括:将系统当前正在运行的进程对应的广播接收者设置在广播接收队列的前端。

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

s201、获取广播发送队列中待发送的广播消息。

s202、确定和待发送的广播消息对应的广播接收者。

s203、遍历广播接收者对应的进程,将和系统前台进程一致的进程对应的广播接收者设置在广播接收队列的队头。

在一个实施例中,进程的运行情况可以是前台运行进程、后台隐含执行进程和停止运行的进程。通过遍历广播接收者对应的进程,可获取广播接收者对应的进程的当前运行信息,根据广播接收者对应的进程的当前运行信息对广播接收者队列进行调整设置以重新排序,示例性的,可以是前台运行进程对应的广播接收者设置在广播接收者队列的队头,将已停止运行的进程对应的广播接收者设置在广播接收者队列的队尾,确保系统前台进程对应的广播接收者可及时接收待发送的广播消息。

本实施例提供了一种广播接收者队列调整方法,通过遍历待发送的广播消息的广播接收者对应的进程,将和系统前台进程一致的进程对应的广播接收者设置在广播接收队列的队头,形成新的广播接收者队列,确保了前台进程对应的广播接收者可及时接收待发送的广播消息,其中前台进程大多为系统正在运行的需要实时处理消息的进程,如终端设备运行界面对应的进程,该前台进程在第一时间接收到广播消息以对广播消息进行处理可以显著的提高系统的对广播消息的响应速度,解决了现有的广播接收机制中系统当前的前台进程无法第一时间接收广播信息的问题,提高了广播接收效率,降低了系统资源消耗,同时,由于前台进程运行过程中对广播消息依赖的实时性更强,如果等待时间较长则会导致其在一定时间内出现无响应的情况,通过本实施例方案使得系统稳定性显著增加。

图3是本发明实施例提供的另一种广播接收者队列调整方法的流程图,在上述实施例的基础上,可选的,将进程活跃度满足预设条件的广播接收者设置在广播接收队列的前端包括:按照预设的广播接收列表中广播接收者的排列顺序对广播接收者队列中广播接收者的位置顺序进行调整。

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

s301、获取广播发送队列中待发送的广播消息。

s302、确定和待发送的广播消息对应的广播接收者。

s303、遍历广播接收者对应的进程,按照预设的广播接收列表中广播接收者的排列顺序对广播接收者队列中广播接收者的位置顺序进行调整。

其中,预设的广播接收列表可以是系统根据广播接收者对应的进程信息确定和/或广播接收者接收广播消息的历史排列顺序确定。当预设的广播接收列表被确定后,可以在预设时间(如1天、3天或5天)对该预设列表进行更新,在对广播接收队列中广播接收者顺序进行调整时依据广播接收列表中广播接收者的顺序进行适应性调整。举例而言,广播接收列表中广播接收者的排序由前至后依次为广播接收者1、广播接收者2、广播接收者5、广播接收者8、广播接收者3,广播接收者队列中由前至后的排序为广播接收者10、广播接收者5、广播接收者2等,则调整后的广播接收者队列中广播接收者的排序为广播接收者2、广播接收者5、广播接收者10。

在一个实施例中,预设的广播接收列表在形成过程中,根据广播接收者对应的进程的遍历结果,若广播接收者对应的进程中存在与系统当前的前台进程相同的进程时,将预设的广播接收列表中的系统当前的前台进程对应的广播接收者调节至预设的广播接收列表的第一位,并依次调整该预设的广播接收列表。

在一个实施例中,预设的广播接收列表在形成过程中,根据广播接收者对应的进程的遍历结果,若广播接收者对应的进程的活跃度与预设的广播接收列表广播接收者排列顺序存在差异时,根据当前遍历结果中广播接收者对应的进程的活跃度调整预设的广播接收列表广播接收者排列顺序,形成新的广播接收列表。

在一个实施例中还包括对广播接收列表中广播接收者的顺序进行调整,示例性的,依据广播接收者对应的进程的运行频率、运行时长和资源占用率中至少一种对所述预设的广播接收列表中广播接收者的排列顺序进行调整,以使进程活跃度高的广播接收者在所述预设的广播接收列表中排序靠前。

其中,根据运行频率、运行时长、资源占用率中一种或多种信息确定广播接收者对应的进程的活跃度,并根据广播接收者对应的进程的活跃度对预设的广播接收列表中广播接收者的排列顺序进行调整,示例性的,根据进程的活跃度对广播接受者依次排序,将活跃度最高的进程对应的广播接收者设置在广播接收列表的队头,将活跃度最低的进程对应的广播接收者设置在广播接收列表的队尾,使得活跃度最高的进程对应的广播接收者优先接收待广播消息,解决了现有的广播接收机制中活跃应用无法第一时间接收广播消息的问题,提高了广播接收效率。其中,在进程运行过程中对进程的运行频率、运行时长、资源占用率进行统计、记录,进程运行的频率越大,进程的活跃度越高,进程的运行时长越长,进程的活跃度越高,进程的资源占用率越大,进程的活跃度越高。

在一个实施例中,记录并存储待发送的广播消息对应的广播发送者与调整后的广播接收列表的对应关系,将调整后的广播接收列表更新为预设的广播接收列表,若检测到待发送的广播消息,则确定发送该广播消息的广播发送者,直接调用对应的预设的广播接收列表来确定广播接收者接收广播消息的顺序,提高预设的广播接收列表的实现广播接收者排序的准确度,减少待发送的广播消息对应的广播接收者队列的调整次数,避免了需要逐次遍历对应的广播接收者进程调整广播接收者队列带来的资源消耗,进一步提高广播接收、处理效率。

本实施例提供了一种广播接收者队列调整方法,通过遍历待发送的广播消息的广播接收者对应的进程,按照预设的广播接收列表中广播接收者的排列顺序对广播接收者队列中广播接收者的位置顺序进行调整,解决了现有的广播接收机制效率低下的问题,提高了广播接收、处理效率,降低了系统的资源消耗。

图4是本发明实施例提供的一种广播接收者队列调整装置的结构框图,该装置用于执行上述实施例提供的广播接收者队列调整方法,具备执行方法相应的功能模块和有益效果。如图4所示,该装置具体包括:获取模块401、接收者确定模块402、进程遍历模块403和队列调整模块404。

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

接收者确定模块402,用于确定和待发送的广播消息对应的广播接收者;

进程遍历模块403,用于遍历广播接收者对应的进程;

队列调整模块404,用于将进程活跃度满足预设条件的广播接收者设置在广播接收队列的前端。

本实施例提供的技术方案,通过获取广播发送队列中待发送的广播消息,确定和所述待发送的广播消息对应的广播接收者,遍历所述广播接收者对应的进程,将进程活跃度满足预设条件的广播接收者设置在广播接收队列的前端,提高了广播处理效率,降低了系统资源消耗,使得系统稳定性增加。

可选的,队列调整模块404具体用于:

将系统当前正在运行的进程对应的广播接收者设置在广播接收队列的前端。

可选的,队列调整模块404具体用于:

将所述广播接收者对应的进程中和前台进程一致的进程前台进程一致的进程设置在广播接收者队列的队头。

可选的,队列调整模块404具体用于:

按照预设的广播接收列表中广播接收者的排列顺序对广播接收者队列中广播接收者的位置顺序进行调整。

可选的,该装置还包括:

列表更新模块405,用于依据广播接收者对应的进程的运行频率、运行时长和资源占用率中至少一种对所述预设的广播接收列表中广播接收者的排列顺序进行调整,以使进程活跃度高的广播接收者在所述预设的广播接收列表中排序靠前。

本实施例在上述各实施例的基础上提供了一种终端设备,该终端设备可以包括本发明提供的广播接收者队列调整装置。图5是本发明实施例提供的终端设备的结构示意图,如图5所示,该终端设备可以包括:存储器501、中央处理器(centralprocessingunit,cpu)502、外设接口503、rf(radiofrequency,射频)电路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,编译码器)芯片组、用户标识模块(subscriberidentitymodule,sim)等等。

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

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

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

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

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

确定和所述待发送的广播消息对应的广播接收者;

遍历所述广播接收者对应的进程,将进程活跃度满足预设条件的广播接收者设置在广播接收队列的前端。

可选的,所述将进程活跃度满足预设条件的广播接收者设置在广播接收队列的前端包括:将系统当前正在运行的进程对应的广播接收者设置在广播接收队列的前端。

可选的,所述将系统当前正在运行的进程对应的广播接收者设置在广播接收队列的前端包括:将和系统前台进程一致的进程对应的广播接收者设置在广播接收队列的队头。

可选的,所述将进程活跃度满足预设条件的广播接收者设置在广播接收队列的前端包括:按照预设的广播接收列表中广播接收者的排列顺序对广播接收者队列中广播接收者的位置顺序进行调整。

可选的,还包括:依据广播接收者对应的进程的运行频率、运行时长和资源占用率中至少一种对所述预设的广播接收列表中广播接收者的排列顺序进行调整,以使进程活跃度高的广播接收者在所述预设的广播接收列表中排序靠前。

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

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