广播发送方法、装置和终端设备与流程

文档序号:11732431阅读:177来源:国知局
广播发送方法、装置和终端设备与流程

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



背景技术:

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

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

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



技术实现要素:

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

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

获取广播发送队列中当前待发送的广播消息,确定所述当前待发送的广播消息的发送进程;

确定所述广播发送队列中已发送的广播消息的发送进程;

依据所述当前待发送的广播消息的发送进程和所述已发送的广播消息的发送进程确定是否发送所述当前待发送的广播消息至所述当前待发送的广播消息的广播接收者。

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

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

第一发送进程确定模块,用于确定所述当前待发送的广播消息的发送进程;

第二发送进程确定模块,用于确定所述广播发送队列中已发送的广播消息的发送进程;

控制模块,用于依据所述当前待发送的广播消息的发送进程和所述已发送的广播消息的发送进程确定是否发送所述当前待发送的广播消息至所述当前待发送的广播消息的广播接收者。

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

获取广播发送队列中当前待发送的广播消息,确定所述当前待发送的广播消息的发送进程;

确定所述广播发送队列中已发送的广播消息的发送进程;

依据所述当前待发送的广播消息的发送进程和所述已发送的广播消息的发送进程确定是否发送所述当前待发送的广播消息至所述当前待发送的广播消息的广播接收者。

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

附图说明

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

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

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

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

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

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

具体实施方式

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

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

s101、获取广播发送队列中当前待发送的广播消息,确定所述当前待发送的广播消息的发送进程。

广播机制中,广播消息指的是系统或者应用程序在运行过程中发送的,用于系统和/或应用程序之间传输的信息,示例性的,广播消息可以是系统启动广播消息、短信类广播消息、电话类广播消息或者三方应用类广播消息等。

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

在一个实施例中,管理模块对广播发送队列中的广播消息依次进行发送。广播发送者发送广播消息的过程和广播接收者接收广播消息的过程是异步操作过程,广播发送者和广播接收者通过管理模块实现低耦合的关系匹配。其中,根据广播发送方式的不同可将广播消息分为普通广播消息和有序广播消息。普通广播消息被管理模块发出后,广播接收者对该广播消息的接收是无序的,而有序广播消息被管理模块发出后,广播接收者按照顺序先后依次接收,即第一个广播接收者接收到广播消息并处理完毕后,第二个广播接收者才能开始接收并处理该广播消息,依次类推,本实施例限定在对有序广播消息的处理进行控制。具体的,广播接收者在接收广播消息时,管理模块可以对广播接收器的注册指令进行获取,该广播接收器的注册指令由广播接收者发出。通常,广播接收者通过进程通信机制向管理模块注册(订阅)想要接收的广播消息。广播接收者的服务进程通过调用registerreceiver函数在管理模块中进行广播接收器的注册,同时定义自身感兴趣的广播消息,管理模块在发送广播发送队列中的广播消息时,依据广播接收者的注册情况,将该广播消息发送至对其进行订阅了的广播接收者相应的消息循环队列中,广播接收者接收到该广播消息后回调注册的广播接收器中的接收方法(如onreceive方法)来执行相应的功能以对接收到的广播消息进行处理。

在一个实施例中,对广播发送队列中当前待发送的广播消息进行获取,并确定该广播消息对应的广播发送者的进程。当前待发送的广播消息可以是广播队列中马上要处理到的广播消息(即已发送的广播消息正在处理中,等该已发送的广播消息处理完毕后,该当前待发送的广播消息被处理)。具体的,广播发送者在发出广播消息时会启动相应的进程,进程指系统中的程序关于某数据集合上的运行活动,是系统进行资源分配和调度的基本单位,是系统结构的组成基础,为应用程序的基本执行实体。以计数器应用程序作为广播发送者为例,其发送广播消息的过程可表示为

//创建一个广播消息

intentintent=newintent(broadcast_counter_action);

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

intent.putextra(counter_value,counter);

//发送广播消息

sendbroadcast(intent)

本实施例中,当获取到的广播消息为broadcast_counter_action时,确定出发送该广播消息broadcast_counter_action使用的发送进程,示例性的,可以是对应的进程id号。

s102、确定所述广播发送队列中已发送的广播消息的发送进程。

在一个实施例中,获取广播队列中已发送的广播消息,依据已发送的广播消息的内容确定出对应的发送该广播消息的发送进程,具体过程如s101所述,此处不再赘述。

s103、依据所述当前待发送的广播消息的发送进程和所述已发送的广播消息的发送进程确定是否发送所述当前待发送的广播消息至所述当前待发送的广播消息的广播接收者。

本步骤中,依据s101确定出的当前待发送的广播消息对应的发送进程和s102中确定出的已发送的广播消息对应的发送进程来最终确定是否发送当前待发送的广播消息。

在一个实施例中,如果所述当前待发送的广播消息的发送进程和所述已发送的广播消息的发送进程不同,则发送所述当前待发送的广播消息至所述当前待发送的广播消息的广播接收者。该实施例中,由于当前待发送的广播消息的发送进程和之前已发送的广播消息的发送进程不同,可以及时的对待发送的广播消息进行发送,而不必等待之前的广播消息处理完毕后再进行发送,由此完成了有序广播队列的并行发送。

需要说明的是,在一个实施例中,方案为对广播发送队列进行控制处理,其中,可以是监测到管理模块依据广播发送队列中广播消息的次序,在发出一个广播消息后开始判断当前待发送的广播消息的进程。

本实施例提供的技术方案,通过获取广播发送队列中当前待发送的广播消息,确定所述当前待发送的广播消息的发送进程,确定所述广播发送队列中已发送的广播消息的发送进程,依据所述当前待发送的广播消息的发送进程和所述已发送的广播消息的发送进程确定是否发送所述当前待发送的广播消息至所述当前待发送的广播消息的广播接收者,解决了现有的有序广播发送队列中,需要等待已发送的广播消息处理完毕才能执行下一广播消息发送带来的广播处理效率低下的问题,极大的缩短了广播队列的处理时间。

图2是本发明实施例提供的另一种广播发送方法的流程图,在上述实施例的基础上,在所述发送所述当前待发送的广播消息至所述当前待发送的广播消息的广播接收者之后,还包括:将所述已发送的广播消息从所述广播发送队列中移除,并保存至数组中;接收到所述已发送的广播消息的广播接收者发送的反馈结果后,发送在所述数组中保存的已发送的广播消息至对应的下一广播接收者。

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

s201、获取广播发送队列中当前待发送的广播消息,确定所述当前待发送的广播消息的发送进程,确定所述广播发送队列中已发送的广播消息的发送进程。

s202、依据所述当前待发送的广播消息的发送进程和所述已发送的广播消息的发送进程确定是否发送所述当前待发送的广播消息至所述当前待发送的广播消息的广播接收者。

s203、将所述已发送的广播消息从所述广播发送队列中移除,并保存至数组中。

在一个实施例中,广播消息被发出进行处理时,广播队列中保留着该正在处理的广播消息,当广播消息处理完毕得到反馈后,该广播消息被广播队列移除。该实施例中,当确定出当前待发送的广播消息的发送进程和已发送的广播消息的发送进程不一致,则及时的发送出了该待发送的广播消息进行广播处理,此时,可选的,将已发送的还在广播队列中的广播消息移除出广播队列,保存在数组中,该数组可以是新建数组,用于存放已发送的广播消息。

s204、接收到所述已发送的广播消息的广播接收者发送的反馈结果后,发送在所述数组中保存的已发送的广播消息至对应的下一广播接收者。

在一个实施例中,广播接收者在处理完毕对应的广播消息后会反馈处理结果,接收到该处理的反馈结果后相应的将广播消息发送至下一广播接收者进行处理。其中,广播接收者接收广播消息的注册过程可表示为(以接收计数器发送的广播消息为例):

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

intentfiltercounteractionfilter=

newintentfilter(counterservice.broadcast_counter_action);

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

registerreceiver(counteractionreceiver,counteractionfilter)

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

在一个实施例中,将已发送的广播消息移除出广播队列,保存在新建数组中,接收到反馈结果后,从该新建数组中查询对应的广播消息,在将该广播消息发送至下一广播接收者,完成了有序广播队列并行发送广播消息的同时,使得针对每个广播消息而言又是有序处理的,进一步优化了广播发送的处理方式,提高了广播处理效率的同时保证了广播消息处理的有序性。

图3是本发明实施例提供的另一种广播发送方法的流程图,在上述实施例的基础上,可选的,如果所述当前待发送的广播消息的发送进程和所述已发送的广播消息的发送进程相同,则不发送所述当前待发送的广播消息至所述当前待发送的广播消息的广播接收者;在所述广播发送队列中获取所述当前待发送的广播消息的排序之后的待发送的广播,确定所述待发送的广播消息的发送进程;如果所述待发送的广播消息的发送进程和所述已发送的广播消息的发送进程不同,则发送所述待发送的广播消息至所述待发送的广播消息的广播接收者。

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

s301、获取广播发送队列中当前待发送的广播消息,确定所述当前待发送的广播消息的发送进程。

s302、确定所述广播发送队列中已发送的广播消息的发送进程。

s303、判断所述当前待发送的广播消息的发送进程和所述已发送的广播消息的发送进程是否相同,如果是,则执行s304、s305。

s304、不发送所述当前待发送的广播消息至所述当前待发送的广播消息的广播接收者。

在一个实施例中,如果确定出的当前待发送的广播消息和已发送的广播消息的发送进程一致,未避免造成对同一进程的占用,则不发送该当前的待发送的广播消息,等待同一进程的广播消息处理完毕后再行发送。

s305、在所述广播发送队列中获取所述当前待发送的广播消息的排序之后的待发送的广播,确定所述待发送的广播消息的发送进程,如果所述待发送的广播消息的发送进程和所述已发送的广播消息的发送进程不同,则发送所述待发送的广播消息至所述待发送的广播消息的广播接收者。

在一个实施例中,依据广播队列中广播消息的排序次序,依次确定是否发送广播消息,如果广播消息的发送进程和已发送的广播消息的发送进程不同则发送该广播消息,若相同,则继续获取下一广播消息,并确定对应的发送进程以确定是否发送该广播消息。

本实施例提供了一种广播发送方法,如果所述当前待发送的广播消息的发送进程和所述已发送的广播消息的发送进程相同,则不发送所述当前待发送的广播消息至所述当前待发送的广播消息的广播接收者,在所述广播发送队列中获取所述当前待发送的广播消息的排序之后的待发送的广播,确定所述待发送的广播消息的发送进程,如果所述待发送的广播消息的发送进程和所述已发送的广播消息的发送进程不同,则发送所述待发送的广播消息至所述待发送的广播消息的广播接收者,实现了有序广播队列的并行发送,提高了广播处理效率,降低了系统功耗。

在上述技术方案的基础上,在一个实施例中,所述已发送的广播消息的发送进程包括在广播消息发送时记录的发送所述广播消息的发送进程,所述已发送的广播消息的发送进程依据所述已发送的广播消息的处理状态进行更新。在确定广播发送队列中的广播消息的发送进程过程中,由于广播发送队列中的广播消息可能数量众多,由此导致当确定到一个广播消息的发送进程和之前已发送的广播消息的发送进程一致,但之前记录的已发送的广播消息已经处理完毕而释放对应的进程,本方案中,已发送的广播消息的发送进程依据已发送的广播消息的处理状态进行更新,若处理完毕,则对应设置该进程不被占用以用于新的广播消息进行发送。

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

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

第一发送进程确定模块402用于确定所述当前待发送的广播消息的发送进程;

第二发送进程确定模块403用于确定所述广播发送队列中已发送的广播消息的发送进程;

控制模块404用于依据所述当前待发送的广播消息的发送进程和所述已发送的广播消息的发送进程确定是否发送所述当前待发送的广播消息至所述当前待发送的广播消息的广播接收者。

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

可选的,所述控制模块404具体用于:如果所述当前待发送的广播消息的发送进程和所述已发送的广播消息的发送进程不同,则发送所述当前待发送的广播消息至所述当前待发送的广播消息的广播接收者。

可选的,还包括:保存模块405,用于在所述发送所述当前待发送的广播消息至所述当前待发送的广播消息的广播接收者之后,在所述发送所述当前待发送的广播消息至所述当前待发送的广播消息的广播接收者之后,将所述已发送的广播消息从所述广播发送队列中移除,并保存至数组中;所述控制模块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