本发明实施例涉及计算机技术,尤其涉及一种广播队列生成方法、装置和终端设备。
背景技术:
广播是一种被广泛运用的在应用程序之间进行信息传输的机制,以安卓操作系统为例,其通过广播(Broadcast)来实现应用程序间数据的传输和共享。典型的,如安卓自带的短信、电话等广播。
在安卓系统中,广播发送者通过调用sendBroadcast函数进行广播消息的发送,广播接收者通过调用registerReceiver函数在管理模块中进行广播接收器(BroadcastReceiver)的注册,并定义自身感兴趣的广播消息,由此来实现对相应的广播消息的接收。
现有技术中,广播队列的生成方式存在的缺陷,使得广播处理效率低下,系统资源消耗过多且稳定性差。
技术实现要素:
本发明提供了一种广播队列生成方法、装置和终端设备,提高了广播处理效率,降低了系统资源消耗,增加了系统的稳定性。
第一方面,本发明实施例提供了一种广播队列生成方法,包括:
获取广播发送者发送的广播消息;
依据所述广播消息确定和所述广播消息对应的广播接收者的参数以及所述广播发送者的参数;
如果所述广播发送者的参数以及所述广播接收者的参数满足预设条件,则确定所述广播消息的属性信息,依据所述广播消息的属性信息生成广播队列。
第二方面,本发明实施例还提供了一种广播队列生成装置,包括:
获取模块,用于获取广播发送者发送的广播消息;
参数确定模块,用于依据所述广播消息确定和所述广播消息对应的广播接收者的参数以及所述广播发送者的参数;
队列生成模块,用于如果所述广播发送者的参数以及所述广播接收者的参数满足预设条件,则确定所述广播消息的属性信息,依据所述广播消息的属性信息生成广播队列。
第三方面,本发明实施例还提供了一种终端设备,包括:处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
获取广播发送者发送的广播消息;
依据所述广播消息确定和所述广播消息对应的广播接收者的参数以及所述广播发送者的参数;
如果所述广播发送者的参数以及所述广播接收者的参数满足预设条件,则确定所述广播消息的属性信息,依据所述广播消息的属性信息生成广播队列。
本发明实施例提供的技术方案,解决了现有的广播队列生成方式存在的缺陷,提高了广播处理效率,降低了系统资源消耗,使得系统稳定性增加。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是本发明实施例提供的一种广播队列生成方法的流程图;
图2是本发明实施例提供的另一种广播队列生成方法的流程图;
图3是本发明实施例提供的另一种广播队列生成方法的流程图;
图4是本发明实施例提供的一种广播队列生成装置的结构框图;
图5是本发明实施例提供的一种终端设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
图1是本发明实施例提供的一种广播队列生成方法的流程图,本实施例可适用于对广播队列的生成过程进行控制的情况,该方法可以由本发明实施例提供的终端设备来执行,该终端设备的广播队列生成装置可采用软件以及硬件的方式实现,如图1所示,本实施例提供的具体方案如下:
S101、获取广播发送者发送的广播消息。
在广播处理过程中,广播发送者的服务进程通过调用广播发送函数(如sendBroadcast函数)将广播消息发送至管理模块(如ActivityManagerService,活动管理服务),管理模块接收到该广播消息后将其放入广播发送队列,管理模块通过进程通信机制(如Binder进程通信机制)将广播发送队列中的广播消息发送至符合接收条件的广播接收者。
广播机制中,广播消息指的是系统或者应用程序在运行过程中发送的,用于系统以及应用程序之间传输的信息,示例性的,广播消息可以是系统启动广播消息、短信类广播消息、电话类广播消息或者三方应用类广播消息等。广播发送者发送广播消息的过程和广播接收者接收广播消息的过程是异步操作过程,广播发送者和广播接收者通过管理模块实现低耦合的关系匹配,即广播发送者在发送广播消息后并不关心具体的广播接收者是谁,广播接收者只接受自己感兴趣的广播消息,也不关心具体的广播发送者。
具体的,以计数器应用程序作为广播发送者为例,其发送广播消息的过程可表示为:
//创建一个广播消息
Intent intent=new Intent(BROADCAST_COUNTER_ACTION);
//传递计数器参数及对应的计数值
intent.putExtra(COUNTER_VALUE,counter);
//发送广播消息
sendBroadcast(intent)
在一个实施例中,当广播发送者发送广播消息至管理模块时,对该广播消息进行获取以用于后续处理。
S102、依据所述广播消息确定和所述广播消息对应的广播接收者的参数以及所述广播发送者的参数。
广播发送者发送广播消息和广播接收者接收广播消息为异步过程,广播接收者在接收广播消息时,管理模块可以对广播接收器的注册指令进行获取,该广播接收器的注册指令由广播接收者发出。通常,广播接收者通过进程通信机制向管理模块注册(订阅)想要接收的广播消息。广播接收者的服务进程通过调用registerReceiver函数在管理模块中进行广播接收器的注册,同时定义自身感兴趣的广播消息,管理模块在发送广播发送队列中的广播消息时,依据广播接收者的注册情况,将该广播消息发送至对其进行订阅了的广播接收者相应的消息循环队列中,广播接收者接收到该广播消息后回调注册的广播接收器中的接收方法(如onReceive方法)来执行相应的功能以对接收到的广播消息进行处理。
在一个实施例中,广播接收者接收广播消息的注册过程可表示为(以接收S101中对应的计数器发送的广播消息为例):
//定义一个感兴趣的广播消息(订阅广播消息)
IntentFilter counterActionFilter=
new IntentFilter(CounterService.BROADCAST_COUNTER_ACTION);
//进行广播接收器的注册
registerReceiver(counterActionReceiver,counterActionFilter)
当该广播发送者发送的广播消息(BROADCAST_COUNTER_ACTION)由管理模块发出后,由于广播接收者注册了对应的接收该广播消息的广播接收器,该广播消息即会被对应的广播接收者接收、处理。其中,广播消息对应的广播接收者的数量可以是一个或多个。
在一个实施例中,依据广播消息确定和广播消息对应的广播接收者的参数以及广播发送者的参数为:依据广播消息确定和所述广播消息对应的广播接收者的类型以及所述广播发送者的类型。其中,广播发送者和广播接收者的类型可以是系统类型、第三方应用平台类型、未知类型等。在一个实施例中,在确定广播消息对应的广播发送者和广播接收者的类型之前,还包括:对广播发送者和广播接收者的类型进行分类,并将分类结果记录在数据库中,该分类可依据广播发送者和广播接收者对应的应用程序安装后进行自动分类,也可以接收分类指令,依据分类指令对广播发送者的类型进行划分,还可以是对系统中对已安装的应用程序进行自动分类,分类完毕后记录在数据库中以用于作为后续的比对依据。
在一个实施例中,确定的广播接收者的参数可以是广播接收者的数量,如前所述,一个广播消息可以同时对应一个或多个广播接收者,广播接收者的数量越多,表征了处理该广播消耗的时间越长,消耗的系统资源越大;在另一实施例中,确定出的广播接收者的参数还可以是广播接收者的类型的数量,即统计对应接收广播消息的广播接收者的类型是一种还是多种。
S103、如果所述广播发送者的参数以及所述广播接收者的参数满足预设条件,则确定所述广播消息的属性信息,依据所述广播消息的属性信息生成广播队列。
在一个实施例中,依据广播消息确定出的广播发送者和广播接收者的参数为广播发送者的类型和广播接收者的类型时,如果所述广播发送者的类型以及所述广播接收者的类型满足预设类型,则确定所述广播消息的属性信息,依据所述广播消息的属性信息生成广播队列。其中,该预设类型包括系统应用类型,即确定出广播发送者和广播接收者都是系统类型时,确定出广播消息的属性信息,再依据该属性信息生成相应的广播队列。示例性的,如果广播发送者的类型为第三方应用类型,即不满足预设类型,则禁止该广播消息添加至广播队列中或禁止其生成新的广播队列。具体的,管理模块对生成的广播发送队列中的广播消息依次进行发送。根据广播发送方式的不同可将广播消息分为普通广播消息和有序广播消息。普通广播消息被管理模块发出后,广播接收者对该广播消息的接收是无序的,而有序广播消息被管理模块发出后,广播接收者按照顺序先后依次接收,即第一个广播接收者接收到广播消息并处理完毕后,第二个广播接收者才能开始接收并处理该广播消息,依次类推。
在一个实施例中,确定出的和广播消息对应的广播接收者的参数为广播接收者的数量时,如果所述广播接收者的数量满足预设数量,则确定所述广播消息的属性信息,依据所述广播消息的属性信息生成广播队列。其中,该预设数量可以是小于10、30或50中的任一值,即广播接收者的数量较少时,依据所述广播消息的属性信息生成广播队列。
上述实施例中,通过对确定出的广播接收者的类型、广播发送者的类型、广播接收者的数量进行判断,来最终确定是否将广播消息添加(生成)至广播队列中。需要说明的是,广播消息的入队条件不限于上述广播接收者的类型、数量以及广播发送者的类型,具体的判断方式也不限于上述内容,可以是多种确定出的广播发送者和广播接收者的参数的组合。
通过上述广播队列的生成方法,避免了第三方应用发送的大量广播进入广播队列中进行广播发送,以及当广播消息对应大量广播接收者时也对该广播消息的入队进行屏蔽,优化了广播处理机制,提高广播处理效率,降低系统的资源消耗。
需要说明的是,在一个实施例中,方案为对广播队列的生成进行控制,即在广播发送者发出广播消息至管理模块时,增加了广播消息生成广播队列的条件,广播发送者发送广播消息本身以及广播接收者的注册不受影响。
本实施例提供的技术方案,通过获取广播发送者发送的广播消息,依据所述广播消息确定和所述广播消息对应的广播接收者的参数以及所述广播发送者的参数,如果所述广播发送者的参数以及所述广播接收者的参数满足预设条件,则确定所述广播消息的属性信息,依据所述广播消息的属性信息生成广播队列,对广播队列的形成进行了合理控制,避免了所有广播发送者都将发送的广播消息生成广播队列进行后续处理带来的系统隐患,提高了广播处理效率,降低了系统资源消耗,使得系统稳定性增加。
图2是本发明实施例提供的另一种广播队列生成方法的流程图,在上述实施例的基础上,可选的,所述确定所述广播发送者的参数包括:确定所述广播发送者发送广播消息的频率;所述广播发送者的参数满足预设条件包括:所述广播发送者的广播消息的发送频率满足预设频率。
基于上述优化,如图2所示,本实施例提供的技术方案具体如下:
S201、获取广播发送者发送的广播消息。
S202、确定所述广播发送者发送广播消息的频率。
在一个实施例中,对系统中广播发送者发送广播消息的次数进行记录,确定出的广播发送者发送广播消息的频率可以是在预设时间段内(如30分钟、2小时或1天)发送广播消息的次数。
S203、如果所述广播发送者的广播消息的发送频率满足预设频率,则确定所述广播消息的属性信息,依据所述广播消息的属性信息生成广播队列。
本步骤中,可依据S202确定出的广播发送者发送广播消息的频率的大小是否满足预设频率来对该广播消息是否生成广播队列进行控制。在一个实施例中,如果确定出的广播发送者发送广播消息的频率满足预设频率(如小于20次/小时),则依据所述广播消息的属性信息生成广播队列。示例性的,还可以是,如果确定出的所述广播发送者发送广播消息的频率满足预设频率,则对所述广播发送者发送广播消息能够生成广播队列的数量进行限制;还可以是,如果确定出的所述广播发送者发送广播消息的频率满足预设频率,则在预设时间内,允许广播消息生成广播队列。其中,对广播消息入队数量进行限制的方式(如每天仅能将5-10条广播消息生成广播队列),避免了大量广播消息入队后被管理模块发送至广播接收者造成的资源消耗过大的问题。在预设时间内(如1小时)禁止该广播发送者发送的广播消息入队的方式中,该预设时间的设定可依据系统的实时负载(如CPU占用率、内存占用率)以及终端设备当前剩余电量来适应性调整,如系统当前的负载较高,则限制在30分钟内禁止该广播发送者的广播消息入队。
本实施例提供了一种广播队列生成方法,获取广播发送者发送的广播消息,依据所述广播消息确定广播发送者发送广播消息的频率,如果所述频率满足预设频率,则确定所述广播消息的属性信息,依据所述广播消息的属性信息生成广播队列,通过对广播发送者发送广播消息的频率进行合理的监控、判断,对大量、频繁发送广播消息的广播发送者发送的广播消息不予生成广播队列,避免大量资源的消耗以及第三方恶意软件的频繁广播,优化了广播机制。
图3是本发明实施例提供的另一种广播队列生成方法的流程图,在上述实施例的基础上,可选的,所述确定所述广播消息的属性信息,依据所述广播消息的属性信息生成广播队列包括:确定接收所述广播消息的广播接收者的进程,依据确定出的所述广播接收者的进程生成广播队列。
基于上述优化,如图3所示,本实施例提供的技术方案具体如下:
S301、获取广播发送者发送的广播消息。
S302、依据所述广播消息确定和所述广播消息对应的广播接收者的参数以及所述广播发送者的参数。
S303、如果所述广播发送者的参数以及所述广播接收者的参数满足预设条件,则确定接收所述广播消息的广播接收者的进程,依据确定出的所述广播接收者的进程生成广播队列。
广播消息的属性信息可以是广播消息自身包含的指令信息,还可以是和该广播消息关联的广播发送者、广播接收者的相关信息。在一个实施例中,依据广播消息的属性信息生成广播队列可以是依据广播消息被广播发送者发出的时间的先后顺序生成广播队列。
在另一个实施例中,广播消息的属性信息可以是接收该广播消息的广播接收者正在运行的进程信息。在一个实施例中,依据广播消息的属性信息生成广播队列的方式可以是依据确定出的所述广播接收者的进程来确定广播消息在广播队列中的位置,将该广播消息添加到对应的位置。示例性的,当确定出该广播消息的广播接收者的运行进程包括前台运行进程,则将该广播消息排在广播队列的队头来生成广播队列,以使前台进程的广播接收者第一时间接收该广播消息并进行处理。需要说明的,在其它实施例中,依据广播消息的属性信息生成广播队列的方式不限于广播接收者的进程,还可以是根据广播接收者的类型(是否为系统应用)确定广播消息在广播队列中的排序顺序生成广播队列。
本实施例提供了一种广播队列生成方法,获取广播发送者发送的广播消息,依据所述广播消息确定和所述广播消息对应的广播接收者的参数以及所述广播发送者的参数,如果所述广播发送者的参数以及所述广播接收者的参数满足预设条件,则确定接收所述广播消息的广播接收者的进程,依据确定出的所述广播接收者的进程生成广播队列,实现了广播队列的灵活生成,可以依照不同广播接收者进程的运行情况控制广播消息的先后发送顺序,进一步优化了广播机制,提高了广播效率。
图4是本发明实施例提供的一种广播队列生成装置的结构框图,该装置用于执行上述实施例提供的广播队列生成方法,具备执行方法相应的功能模块和有益效果。如图4所示,该装置具体包括:获取模块401、参数确定模块402、队列生成模块403。
其中,获取模块401用于获取广播发送者发送的广播消息;
参数确定模块402用于依据所述广播消息确定和所述广播消息对应的广播接收者的参数以及所述广播发送者的参数;
队列生成模块403用于如果所述广播发送者的参数以及所述广播接收者的参数满足预设条件,则确定所述广播消息的属性信息,依据所述广播消息的属性信息生成广播队列。
本实施例提供的技术方案,解决了现有的广播队列生成方式存在的缺陷,提高了广播处理效率,降低了系统资源消耗,使得系统稳定性增加。
可选的,所述参数确定模块402具体用于:依据所述广播消息确定和所述广播消息对应的广播接收者的类型以及所述广播发送者的类型;所述队列生成模块403具体用于:如果所述广播发送者的类型以及所述广播接收者的类型满足预设类型,则确定所述广播消息的属性信息,依据所述广播消息的属性信息生成广播队列。
可选的,所述参数确定模块402具体用于:依据所述广播消息确定和所述广播消息对应的广播接收者的数量;所述队列生成模块403具体用于:如果所述广播接收者的数量满足预设数量,则确定所述广播消息的属性信息,依据所述广播消息的属性信息生成广播队列。
可选的,所述参数确定模块402具体用于:确定所述广播发送者发送广播消息的频率;所述队列生成模块403具体用于:如果所述广播发送者的广播消息的发送频率满足预设频率,则确定所述广播消息的属性信息,依据所述广播消息的属性信息生成广播队列。
可选的,所述队列生成模块402具体用于:确定接收所述广播消息的广播接收者的进程,依据确定出的所述广播接收者的进程生成广播队列。
本实施例在上述各实施例的基础上提供了一种终端设备,该终端设备可以包括本发明提供的广播队列生成装置。图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可执行如下操作:
获取广播发送者发送的广播消息;
依据所述广播消息确定和所述广播消息对应的广播接收者的参数以及所述广播发送者的参数;
如果所述广播发送者的参数以及所述广播接收者的参数满足预设条件,则确定所述广播消息的属性信息,依据所述广播消息的属性信息生成广播队列。
可选的,所述依据所述广播消息确定和所述广播消息对应的广播接收者的参数以及所述广播发送者的参数包括:
依据所述广播消息确定和所述广播消息对应的广播接收者的类型以及所述广播发送者的类型;
所述广播发送者的参数以及所述广播接收者的参数满足预设条件包括:
所述广播发送者的类型以及所述广播接收者的类型满足预设类型。
可选的,所述依据所述广播消息确定和所述广播消息对应的广播接收者的参数包括:
依据所述广播消息确定和所述广播消息对应的广播接收者的数量;
所述广播接收者的参数满足预设条件包括:所述广播接收者的数量满足预设数量。
可选的,所述确定所述广播发送者的参数包括:
确定所述广播发送者发送广播消息的频率;
所述广播发送者的参数满足预设条件包括:所述广播发送者的广播消息的发送频率满足预设频率。
可选的,其特征在于,所述确定所述广播消息的属性信息,依据所述广播消息的属性信息生成广播队列包括:
确定接收所述广播消息的广播接收者的进程,依据确定出的所述广播接收者的进程生成广播队列。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。