CN105306418A - 多应用程序共享通信连接的方法和系统 - Google Patents
多应用程序共享通信连接的方法和系统 Download PDFInfo
- Publication number
- CN105306418A CN105306418A CN201410290255.6A CN201410290255A CN105306418A CN 105306418 A CN105306418 A CN 105306418A CN 201410290255 A CN201410290255 A CN 201410290255A CN 105306418 A CN105306418 A CN 105306418A
- Authority
- CN
- China
- Prior art keywords
- propelling movement
- component instance
- message
- communication connection
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Computer And Data Communications (AREA)
Abstract
一种多应用程序共享通信连接的方法,包括以下步骤:各应用程序调用预先封装于自身软件包中的信息推送接口;各信息推送接口向系统发起创建推送组件实例的命令,并接收系统返回的已创建的推送组件实例的信息,所述推送组件的相关运行资源集成于各应用程序的软件包中,各推送组件的组件名称以及所配置的进程名称相同;推送组件实例与消息服务器之间建立通信连接;推送组件实例接收所述消息服务器通过所述通信连接下发的消息,消息中包含目标应用程序的程序标识;推送组件实例将接收的消息发送给程序标识对应的应用程序。上述方法可实现各应用程序共享一条通信连接来接收服务器下发的消息。此外,还提供一种多应用程序共享通信连接的系统。
Description
【技术领域】
本发明涉及计算机及网络通信技术领域,特别涉及一种多应用程序共享通信连接的方法和系统。
【背景技术】
随着计算机技术以及网络通信技术的发展,用户的各种需求在不断的增长和变化。为了满足人们日益增长和变化的需求,各种网络应用程序的应运而生。种类繁多的应用程序拉近了人们之间的距离,丰富了人们的业余生活,并开拓了人们所涉足的领域,
现有技术中,与传统的单机应用程序相比较,网络应用程序的不同之处在于,网络应用程序需要与服务器进行通信,以获取特定的相关信息,例如,服务器推送的相关信息等。同一终端(例如移动终端或PC机等)上往往安装了数量众多的网络应用程序,每个应用程序都各自与服务器建立通信连接,从而同一终端与服务器建立的通信连接数量有可能过多。而过多的通信连接必然占用大量的资源,例如消耗过多的电量、网络数据流量,占用过多的内存空间等。尤其对于资源有限的移动终端而言,数量过多的通信连接占用大量资源导致的问题更为严重。
【发明内容】
基于此,针对上述同一终端上应用程序与服务器之间的数量过多的通信连接占用过多资源的问题,有必要提供一种多应用程序共享通信连接的方法和系统。
一种多应用程序共享通信连接的方法,包括以下步骤:
各应用程序调用预先封装于自身软件包中的信息推送接口,封装于各应用程序软件包中的信息推送接口相同;
各信息推送接口向系统发起创建推送组件实例的命令,并接收系统返回的已创建的推送组件实例的信息,所述推送组件的相关运行资源集成于各应用程序的软件包中,各推送组件的组件名称以及所配置的进程名称相同;
所述推送组件实例与消息服务器之间建立通信连接;
所述推送组件实例接收所述消息服务器通过所述通信连接下发的消息,所述消息中包含目标应用程序的程序标识;
所述推送组件实例将接收的消息发送给消息中包含的程序标识对应的应用程序。
在其中一个实施例中,所述推送组件实例与消息服务器之间建立通信连接的步骤包括:
推送组件实例从连接信息提供服务器拉取服务器地址以及服务器端口号,推送组件实例根据拉取的服务器地址和端口号与对应的消息服务器建立通信连接。
在其中一个实施例中,所述方法还包括:
各应用程序将自身的程序标识传递给自身的信息推送接口,各信息推送接口将接收的程序标识传递给所述推送组件实例;
所述推送组件实例将接收的程序标识通过所述通信连接发送给所述消息服务器;
所述消息服务器通过所述通信连接接收程序标识,并建立程序标识与接收所述程序标识的通信连接的连接标识的对应关系。
在其中一个实施例中,在所述推送组件实例接收所述消息服务器通过所述通信连接下发的消息的步骤之前,所述方法还包括:
所述消息服务器将目标应用程序的程序标识封装到待下发消息中;
所述消息服务器查找目标应用程序的程序标识对应的连接标识,将封装好的消息通过查找到的连接标识对应的通信连接发送给对端的推送组件实例。
在其中一个实施例中,在所述推送组件实例与消息服务器之间建立通信连接之后,所述方法还包括步骤:
所述推送组件实例从所述消息服务器拉取心跳包发送频率;
当所述通信连接空闲时,所述推送组件实例按照心跳包发送频率通过所述通信连接发送心跳包,以维持所述通信连接。
在其中一个实施例中,所述方法还包括步骤:
所述推送组件实例监测各应用程序是否都已被关闭;
当各应用程序都已被关闭时,所述推送组件实例关闭所述通信连接。
在其中一个实施例中,所述方法还包括步骤:
所述推送组件实例从连接信息提供服务器拉取唤醒策略;
所述推送组件实例根据所述唤醒策略通过系统提示服务设置自身的运行进程的唤醒闹钟。
一种多应用程序共享通信连接的系统,包括:
启动模块,封装于各应用程序中,用于调用预先封装于自身所在应用程序软件包中的信息推送接口,封装于各应用程序软件包中的信息推送接口相同;
实例创建模块,封装于各信息推送接口中,用于向系统发起创建推送组件实例的命令、接收系统返回的已创建的推送组件实例的信息,所述推送组件的相关运行资源集成于各应用程序的软件包中,各推送组件的组件名称以及所配置的进程名称相同;
连接建立模块,封装于各推送组件中,用于通过所述推送组件实例与消息服务器之间建立通信连接;
消息获取模块,封装于各推送组件中,用于通过所述推送组件实例接收所述消息服务器通过所述通信连接下发的消息,所述消息中包含目标应用程序的程序标识;
消息传递模块,封装于各推送组件中,用于通过所述推送组件实例将接收的消息发送给消息中包含的程序标识对应的应用程序。
在其中一个实施例中,所述连接建立模块用于通过所述推送组件实例从连接信息提供服务器拉取服务器地址和服务器端口号,并通过所述推送组件实例根据拉取的服务器地址和端口号与对应的消息服务器建立通信连接。
在其中一个实施例中,所述启动模块还用于将自身所在应用程序的程序标识传递给对应的信息推送接口;
所述系统还包括:
程序标识传递模块,封装于各信息推送接口中,用于将接收的程序标识传递给所述推送组件实例;
程序标识发送模块,封装于各推送组件中,用于通过所述推送组件实例将接收的程序标识通过所述通信连接发送给所述消息服务器;
程序标识接收模块,运行于消息服务器,用于通过所述通信连接接收程序标识;
程序连接关系建立模块,运行于消息服务器,用于建立程序标识与接收所述程序标识的通信连接的连接标识的对应关系。
在其中一个实施例中,所述系统还包括:
消息生成模块,运行于消息服务器,用于将目标应用程序的程序标识封装到待下发消息中;
消息发送模块,运行于消息服务器,用于查找目标应用程序的程序标识对应的连接标识,将封装好的消息通过查找到的连接标识对应的通信连接发送给对端的推送组件实例;
在其中一个实施例中,所述系统还包括连接维持模块,封装于各推送组件中,用于在与消息服务器之间建立通信连接之后,通过所述推送组件实例从所述消息服务器拉取心跳包发送频率;
所述连接维持模块还用于当所述通信连接空闲时,通过所述推送组件实例按照心跳包发送频率通过所述通信连接发送心跳包,以维持所述通信连接。
在其中一个实施例中,所述系统还包括连接关闭模块,封装于各推送组件中,用于通过所述推送组件实例监测各应用程序是否都已被关闭;
所述连接关闭模块还用于当各应用程序都已被关闭时,通过所述推送组件实例关闭所述通信连接。
在其中一个实施例中,所述系统还包括唤醒设置模块,封装于各推送组件中,用于通过所述推送组件实例从连接信息提供服务器拉取唤醒策略;
所述唤醒设置模块还用于通过所述推送组件实例根据所述唤醒策略通过系统提示服务设置自身的运行进程的唤醒闹钟。
上述多应用程序共享通信连接的方法和系统中,各应用程序调用预先封装于自身软件包中的信息推送接口,由信息推送接口向系统发起创建推送组件实例的命令,由于各推送组件的组件名称以及所配置的进程名称相同,因此,系统接收到创建推送组件实例的命令后,如果该推送组件实例不存在,则会创建一个新的推送组件实例,若该推送组件实例已经存在,则不需要再创建推送组件实例,只需要返回已经创建的推送组件实例的信息即可,从而由唯一的推送组件实例与消息服务器之间建立通信连接,且该唯一的推送组件实例将消息服务器下发的消息发送给对应的应用程序,从而实现各应用程序可共享一条通信连接来接收服务器下发的消息,从而可降低通信连接所耗费的电量、网络数据流量、内存占用量等资源。
【附图说明】
图1为一个实施例中的多应用程序共享通信连接的方法的流程示意图;
图2为一个实施例中消息服务器建立应用程序与共享连接的对应关系的过程的流程示意图;
图3为一个实施例中的多应用程序共享通信连接的系统的结构示意图;
图4为一个实施例中的多应用程序共享通信连接的系统的结构示意图;
图5为一个实施例中的多应用程序共享通信连接的系统的结构示意图;
图6为一个实施例中的多应用程序共享通信连接的系统的结构示意图;
图7为一个实施例中的多应用程序共享通信连接的系统的结构示意图;
图8为一个实施例中的多应用程序共享通信连接的系统的结构示意图;
图9为一个实施例中的多应用程序共享通信连接的系统的结构示意图。
【具体实施方式】
本申请文件的实例例可基于Android操作系统(Android操作系统是一种基于Linux的自由及开放源代码的操作系统)而实现。
如图1所示,在一个实施例中,一种多应用程序共享通信连接的方法,包括以下步骤:
步骤S102,各应用程序调用预先封装于自身软件包中的信息推送接口,封装于各应用程序软件包中的信息推送接口相同。
步骤S104,各信息推送接口向系统发起创建推送组件实例的命令,并接收系统返回的已创建的推送组件实例的信息,推送组件的相关运行资源集成于各应用程序的软件包中,各推送组件的组件名称以及所配置的进程名称相同。
应用程序的软件包可集成信息推送接口和推送组件的相关运行资源打包而成的SDK(SoftwareDevelopmentKit,软件开发工具包)。
各推送组件的android:process属性可被设置为指定的共享进程的名称,从而使得各推送组件由指定的共享进程运行。例如,各推送组件的android:process属性可被设置为com.boya.push,则各推送组件由进程名为com.boya.push的共享进程运行。
本发明基于Android系统而实现,各推送组件的组件名称以及所配置的进程名称相同,各推送接口命令系统创建的推送组件实例的实例名称和对应的进程名称也相同,而系统接收到创建推送组件实例的命令后,会检查是否已经存在该推送组件实例,如果该推送组件实例不存在,则会创建一个新的推送组件实例,若该推送组件实例已经存在,则不再创建推送组件实例,而只返回已经创建的推送组件实例的信息,例如实例句柄等信息,从而由唯一的推送组件实例与消息服务器之间建立通信连接。
步骤S106,推送组件实例与消息服务器之间建立通信连接。
在一个实施例中,步骤S106包括:推送组件实例从连接信息提供服务器拉取服务器地址以及服务器端口号,推送组件实例根据拉取的服务器地址和端口号与对应的消息服务器建立通信连接。
推送组件实例可按照socket通信机制与消息服务器建立通信连接。具体的,推送组件实例可生成连接请求,连接请求中包括自身所运行终端的IP地址和用于建立连接的终端端口号,向拉取的服务器地址和服务器端口号对应的消息服务器的对应端口发送连接请求;消息服务器监听被推送组件实例拉取的端口是否接收到连接请求,当接收到连接请求时记录终端的IP地址和用于建立连接的终端端口号,发送响应数据包到对应终端上的对应端口号;推送组件实例监测终端上用于建立连接的端口是否接收到响应数据包,接收到响应数据包后确认数据包,从而推送组件实例所运行的终端与消息服务器之间建立通信连接。消息服务器可记录连接对应的终端IP地址和终端端口号与连接对应的服务器端口号的对应关系。
本实施例中,连接信息提供服务器可根据各消息服务器的实时运行状态选取当前相对最优的消息服务器,并将当前相对最优的消息服务器提取给推送组件实例。在每次建立通信连接之前,推送组件实例动态拉取服务器地址和端口号,根据拉取的服务器地址和端口与建立通信连接,从而可获得相对最优的消息服务器的地址和端口号,与相对最优的消息服务器建立通信连接,从而获得更快的服务器响应速度。
步骤S108,推送组件实例接收消息服务器通过通信连接下发的消息,消息中包含目标应用程序的程序标识。
步骤S110,推送组件实例将接收的消息发送给消息中包含的程序标识对应的应用程序。
如图2所示,在一个实施例中,上述多应用程序共享通信连接的方法还包括消息服务器建立应用程序与通信连接的对应关系的过程,该过程包括以下步骤:
步骤S202,各应用程序将自身的程序标识传递给自身的信息推送接口,各信息推送接口将接收的程序标识传递给所述推送组件实例。
在一个实施例中,程序标识分配服务器可预先分配各个应用程序的唯一程序标识。各个应用程序的程序标识可被预先写入各自的程序代码中。
步骤S204,推送组件实例将接收的程序标识通过通信连接发送给消息服务器。
推送组件实例可向通信连接对应的服务器地址和服务器端口号发送程序标识。
步骤S206,消息服务器通过通信连接接收程序标识,并建立程序标识与接收程序标识的通信连接的连接标识的对应关系。
消息服务器可能与多个终端建立了通信连接。消息服务器可监测各通信连接对应的端口是否接收到程序标识,当某一端口接收到程序标识时,可建立该程序标识与接收该程序标识的端口对应的通信连接的连接标识的对应关系。消息服务器中记录的通信连接的连接标识可由通信连接所连接到的终端的IP地址(终端IP地址)与通信连接在该终端上对应的端口号(终端端口号)组成。
在一个实施例中,在步骤S108之前,上述多应用程序共享通信连接的方法还包括以下步骤:消息服务器将目标应用程序的程序标识封装到待下发消息中;消息服务器查找目标应用程序的程序标识对应的连接标识,将封装好的消息通过查找到的连接标识对应的通信连接发送给对端的推送组件实例。
在步骤S108中,推送组件实例可监测终端上通信连接对应的端口是否接收到消息,当接收到消息时,则获取对应的端口接收的消息。
具体的,步骤S110可提取消息中包含的程序标识,并通过Android系统的广播通信机制(BroadCastReceiver通信机制)或通过AIDL(Android接口描述语言)进程间通信机制将消息发送给提取的程序标识对应的应用程序。
本实施例中,消息服务器将目标应用程序的程序标识封装到待下发消息中,将消息通过通信连接发送给推送组件实例,推送组件实例将消息发送给对应的应用程序,从而实现多应用程序之间共享通信连接接收服务器下发的消息。
在一个实施例中,在所述推送组件实例与消息服务器之间建立通信连接之后,上述多应用程序共享通信连接的方法还包括步骤:推送组件实例从消息服务器拉取心跳包发送频率;当通信连接空闲时,推送组件实例按照心跳包发送频率通过通信连接发送心跳包,以维持通信连接。
本实施例中,消息服务器可根据消息服务器的运行状态(如CPU使用率、内存占用率等)提供心跳包发送频率,使得消息服务器的运行状态处于指定范围内(例如CPU使用率低于某阈值,内存占用率低于某阈值等),达到消息服务器的资源使用更合理的目的。并且,在通信连接空闲时,推送组件实例通过通信连接发送心跳包以维持通信连接,而不是断开通信连接,从而当再次从消息服务器拉取消息时不需要重新建立通信连接。
在一个实施例中,上述多应用程序共享通信连接的方法还包括步骤:推送组件实例监测各应用程序是否都已被关闭;当各应用程序都已被关闭时,推送组件实例关闭通信连接。
推送组件实例可按照预设时间间隔判断各应用程序是否被关闭,并记录各应用程序的运行状态。当没有应用程序处于运行状态时,即各应用程序都被关闭时,则关闭通信连接。
在关闭通信连接后,推送组件实例可进一步设置运行自身的进程处于休眠状态。
由于应用程序处于关闭状态时,不需要实时从消息服务器拉取消息;本实施例中,当各应用程序都已被关闭时,推送组件实例关闭通信连接,从而可节省通信连接所占用的资源。
在一个实施例中,多应用程序共享通信连接的方法还包括步骤:推送组件实例从连接信息提供服务器拉取唤醒策略;推送组件实例根据唤醒策略通过系统提示服务设置自身的运行进程的唤醒闹钟。
上述唤醒策略可包括运行推送组件实例的进程的休眠时长,休眠时长等于进程从进入休眠状态时刻到被唤醒时刻所间隔的时长。在推送组件实例关闭通信连接之后,并在设置运行自身的进程处于休眠状态之前,推送组件实例可从连接信息提供服务器拉取休眠时长,并设置Android系统中的一个系统提示服务AlarmManager,使得该AlarmManager在运行推送组件实例的进程进入休眠状态时刻起的休眠时长后唤醒进程。
本实施例中,连接信息提供服务器可实时地根据消息服务器下发消息的时间间隔提供唤醒策略,推送组件实例实时地拉取唤醒策略,从而可动态地根据消息服务器下发消息的时间间隔设置运行推送组件实例的进程的休眠时长,使得进程的休眠时长符合消息服务器下发消息的时间间隔,从而提高资源有效利用率。
如图3所示,在一个实施例中,一种多应用程序共享通信连接的系统,包括启动模块302、实例创建模块304、连接建立模块306、消息获取模块308和消息传递模块310,其中:
启动模块302,封装于各应用程序中,用于调用预先封装于自身软件包中的信息推送接口,封装于各应用程序软件包中的信息推送接口302相同。
实例创建模块304,封装于各信息推送接口中,用于向系统发起创建推送组件实例的命令,并接收系统返回的已创建的推送组件实例的信息,推送组件的相关运行资源集成于各应用程序的软件包中,各推送组件的组件名称以及所配置的进程名称相同。
应用程序的软件包可集成信息推送接口和推送组件的相关运行资源打包而成的SDK(SoftwareDevelopmentKit,软件开发工具包)。
各推送组件的android:process属性可被设置为指定的共享进程的名称,从而使得各推送组件由指定的共享进程运行。例如,各推送组件的android:process属性可被设置为com.boya.push,则各推送组件由进程名为com.boya.push的共享进程运行。
本发明基于Android系统而实现,各推送组件的组件名称以及所配置的进程名称相同,各推送接口命令系统创建的推送组件实例的实例名称和对应的进程名称也相同,而系统接收到创建推送组件实例的命令后,会检查是否已经存在该推送组件实例,如果该推送组件实例不存在,则会创建一个新的推送组件实例,若该推送组件实例已经存在,则不再创建推送组件实例,而只返回已经创建的推送组件实例的信息,例如实例句柄等信息,从而由唯一的推送组件实例与消息服务器之间建立通信连接。
连接建立模块306,封装于各推送组件中,用于通过推送组件实例与消息服务器之间建立通信连接。
在一个实施例中,连接建立模块306用于通过推送组件实例从连接信息提供服务器拉取服务器地址以及服务器端口号,推送组件实例根据拉取的服务器地址和端口号与对应的消息服务器建立通信连接。
如图4所示,在一个实施例中,启动模块302、实例创建模块304、连接建立模块306、消息获取模块308和消息传递模块310运行于终端,上述多应用程序共享通信连接的系统还包括运行于消息服务器上的连接响应模块402和连接信息记录模块404。本实施例中,连接建立模块306可通过推送组件实例按照socket通信机制与消息服务器建立通信连接。具体的,连接建立模块306可通过推送组件实例生成连接请求,连接请求中包括自身所运行终端的IP地址和用于建立连接的终端端口号,向拉取的服务器地址和服务器端口号对应的消息服务器的对应端口发送连接请求;连接响应模块402用于监听被推送组件实例拉取的端口是否接收到连接请求,当接收到连接请求时记录终端的IP地址和用于建立连接的终端端口号,发送响应数据包到对应终端上的对应端口号;连接建立模块306可通过推送组件实例监测终端上用于建立连接的端口是否接收到响应数据包,接收到响应数据包后确认数据包,从而推送组件实例所运行的终端与消息服务器之间建立通信连接。连接信息记录模块404用于记录连接对应的终端IP地址和终端端口号与连接对应的服务器端口号的对应关系。
本实施例中,连接信息提供服务器可根据各消息服务器的实时运行状态选取当前相对最优的消息服务器,并将当前相对最优的消息服务器提取给推送组件实例。在每次建立通信连接之前,推送组件实例动态拉取服务器地址和端口号,根据拉取的服务器地址和端口与建立通信连接,从而可获得相对最优的消息服务器的地址和端口号,与相对最优的消息服务器建立通信连接,从而获得更快的服务器响应速度。
消息获取模块308推送组件实例接收消息服务器通过通信连接下发的消息,消息中包含目标应用程序的程序标识。
消息传递模块310推送组件实例将接收的消息发送给消息中包含的程序标识对应的应用程序。
如图5所示,在一个实施例中,上述多应用程序共享通信连接的系统还包括程序标识传递模块502、程序标识发送模块504、程序标识接收模块506和程序连接关系建立模508,本实施例中:
启动模块302还用于将自身所在应用程序的程序标识传递给对应的信息推送接口。
在一个实施例中,上述多应用程序共享通信连接的系统还包括程序标识分配服务器(图中未示出),用于分配各个应用程序的唯一程序标识。各个应用程序的程序标识可被预先写入各自的程序代码中。
程序标识传递模块502,封装于各信息推送接口中,用于将接收的程序标识传递给推送组件实例。
程序标识发送模块504,封装于各推送组件中,用于通过推送组件实例将接收的程序标识通过通信连接发送给消息服务器。
程序标识发送模块504可通过推送组件实例向通信连接对应的服务器地址和服务器端口号发送程序标识。
程序标识接收模块506,运行于消息服务器,用于通过通信连接接收程序标识。
程序连接关系建立模508,运行于消息服务器,用于建立程序标识与接收程序标识的通信连接的连接标识的对应关系。
消息服务器可能与多个终端建立了通信连接。程序标识接收模块506可监测各通信连接对应的端口是否接收到程序标识,当某一端口接收到程序标识时可获取接收到的程序标识。程序连接关系建立模508可建立该程序标识与接收该程序标识的端口对应的通信连接的连接标识的对应关系。消息服务器中记录的通信连接的连接标识可由通信连接所连接到的终端的IP地址(终端IP地址)与通信连接在该终端上对应的端口号(终端端口号)组成。
如图6所示,在一个实施例中,上述多应用程序共享通信连接的系统还包括运行于消息服务器上的消息生成模块602和消息发送模块604。本实施例中:
消息生成模块602用于将目标应用程序的程序标识封装到待下发消息中;
消息发送模块604用于查找目标应用程序的程序标识对应的连接标识,将封装好的消息通过查找到的连接标识对应的通信连接发送给对端的推送组件实例。
消息获取模块306可通过推送组件实例监测终端上通信连接对应的端口是否接收到消息,当接收到消息时,则获取对应的端口接收的消息。
消息传递模块310可通过推送组件实例提取消息中包含的程序标识,并通过Android系统的广播通信机制(BroadCastReceiver通信机制)或通过AIDL(Android接口描述语言)进程间通信机制将消息发送给提取的程序标识对应的应用程序。
本实施例中,消息服务器将目标应用程序的程序标识封装到待下发消息中,将消息通过通信连接发送给推送组件实例,推送组件实例将消息发送给对应的应用程序,从而实现多应用程序之间共享通信连接接收服务器下发的消息。
如图7所示,在一个实施例中,上述多应用程序共享通信连接的系统还包括封装于各推送组件中的连接维持模块702,用于通过推送组件实例从消息服务器拉取心跳包发送频率;当通信连接空闲时,通过推送组件实例按照心跳包发送频率通过通信连接发送心跳包,以维持通信连接。
本实施例中,消息服务器可根据消息服务器的运行状态(如CPU使用率、内存占用率等)提供心跳包发送频率,使得消息服务器的运行状态处于指定范围内(例如CPU使用率低于某阈值,内存占用率低于某阈值等),达到消息服务器的资源使用更合理的目的。并且,在通信连接空闲时,推送组件实例通过通信连接发送心跳包以维持通信连接,而不是断开通信连接,从而当再次从消息服务器拉取消息时不需要重新建立通信连接。
如图8所示,在一个实施例中,上述多应用程序共享通信连接的系统还包括封装于各推送组件中的连接关闭模块802,用于通过推送组件实例监测各应用程序是否都已被关闭;当各应用程序都已被关闭时,通过推送组件实例关闭通信连接。
连接关闭模块802可通过推送组件实例按照预设时间间隔判断各应用程序是否被关闭,并记录各应用程序的运行状态。当没有应用程序处于运行状态时,即各应用程序都被关闭时,则关闭通信连接。
在关闭通信连接后,连接关闭模块802还用于通过推送组件实例进一步设置运行自身的进程处于休眠状态。
由于应用程序处于关闭状态时,不需要实时从消息服务器拉取消息;本实施例中,当各应用程序都已被关闭时,推送组件实例关闭通信连接,从而可节省通信连接所占用的资源。
如图9所示,在一个实施例中,上述多应用程序共享通信连接的系统还包括封装于各推送组件中的唤醒设置模块902,用于通过推送组件实例从连接信息提供服务器拉取唤醒策略;并通过推送组件实例根据唤醒策略通过系统提示服务设置自身的运行进程的唤醒闹钟。
上述唤醒策略可包括运行推送组件实例的进程的休眠时长,休眠时长等于进程从进入休眠状态时刻到被唤醒时刻所间隔的时长。在推送组件实例关闭通信连接之后,并在设置运行自身的进程处于休眠状态之前,唤醒设置模块902可通过推送组件实例从连接信息提供服务器拉取休眠时长,并设置Android系统中的一个系统提示服务AlarmManager,使得该AlarmManager在运行推送组件实例的进程进入休眠状态时刻起的休眠时长后唤醒进程。
本实施例中,连接信息提供服务器可实时地根据消息服务器下发消息的时间间隔提供唤醒策略,推送组件实例实时地拉取唤醒策略,从而可动态地根据消息服务器下发消息的时间间隔设置运行推送组件实例的进程的休眠时长,使得进程的休眠时长符合消息服务器下发消息的时间间隔,从而提高资源有效利用率。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (14)
1.一种多应用程序共享通信连接的方法,包括以下步骤:
各应用程序调用预先封装于自身软件包中的信息推送接口,封装于各应用程序软件包中的信息推送接口相同;
各信息推送接口向系统发起创建推送组件实例的命令,并接收系统返回的已创建的推送组件实例的信息,所述推送组件的相关运行资源集成于各应用程序的软件包中,各推送组件的组件名称以及所配置的进程名称相同;
所述推送组件实例与消息服务器之间建立通信连接;
所述推送组件实例接收所述消息服务器通过所述通信连接下发的消息,所述消息中包含目标应用程序的程序标识;
所述推送组件实例将接收的消息发送给消息中包含的程序标识对应的应用程序。
2.根据权利要求1所述的多应用程序共享通信连接的方法,其特征在于,所述推送组件实例与消息服务器之间建立通信连接的步骤包括:
推送组件实例从连接信息提供服务器拉取服务器地址以及服务器端口号,推送组件实例根据拉取的服务器地址和端口号与对应的消息服务器建立通信连接。
3.根据权利要求1所述的多应用程序共享通信连接的方法,其特征在于,所述方法还包括:
各应用程序将自身的程序标识传递给自身的信息推送接口,各信息推送接口将接收的程序标识传递给所述推送组件实例;
所述推送组件实例将接收的程序标识通过所述通信连接发送给所述消息服务器;
所述消息服务器通过所述通信连接接收程序标识,并建立程序标识与接收所述程序标识的通信连接的连接标识的对应关系。
4.根据权利要求3所述的多应用程序共享通信连接的方法,其特征在于,在所述推送组件实例接收所述消息服务器通过所述通信连接下发的消息的步骤之前,所述方法还包括:
所述消息服务器将目标应用程序的程序标识封装到待下发消息中;
所述消息服务器查找目标应用程序的程序标识对应的连接标识,将封装好的消息通过查找到的连接标识对应的通信连接发送给对端的推送组件实例。
5.根据权利要求1所述的多应用程序共享通信连接的方法,其特征在于,在所述推送组件实例与消息服务器之间建立通信连接之后,所述方法还包括步骤:
所述推送组件实例从所述消息服务器拉取心跳包发送频率;
当所述通信连接空闲时,所述推送组件实例按照心跳包发送频率通过所述通信连接发送心跳包,以维持所述通信连接。
6.根据权利要求1所述的多应用程序共享通信连接的方法,其特征在于,所述方法还包括步骤:
所述推送组件实例监测各应用程序是否都已被关闭;
当各应用程序都已被关闭时,所述推送组件实例关闭所述通信连接。
7.根据权利要求6所述的多应用程序共享通信连接的方法,其特征在于,所述方法还包括步骤:
所述推送组件实例从连接信息提供服务器拉取唤醒策略;
所述推送组件实例根据所述唤醒策略通过系统提示服务设置自身的运行进程的唤醒闹钟。
8.一种多应用程序共享通信连接的系统,其特征在于,包括:
启动模块,封装于各应用程序中,用于调用预先封装于自身所在应用程序软件包中的信息推送接口,封装于各应用程序软件包中的信息推送接口相同;
实例创建模块,封装于各信息推送接口中,用于向系统发起创建推送组件实例的命令、接收系统返回的已创建的推送组件实例的信息,所述推送组件的相关运行资源集成于各应用程序的软件包中,各推送组件的组件名称以及所配置的进程名称相同;
连接建立模块,封装于各推送组件中,用于通过所述推送组件实例与消息服务器之间建立通信连接;
消息获取模块,封装于各推送组件中,用于通过所述推送组件实例接收所述消息服务器通过所述通信连接下发的消息,所述消息中包含目标应用程序的程序标识;
消息传递模块,封装于各推送组件中,用于通过所述推送组件实例将接收的消息发送给消息中包含的程序标识对应的应用程序。
9.根据权利要求8所述的多应用程序共享通信连接的方法,其特征在于,所述连接建立模块用于通过所述推送组件实例从连接信息提供服务器拉取服务器地址和服务器端口号,并通过所述推送组件实例根据拉取的服务器地址和端口号与对应的消息服务器建立通信连接。
10.根据权利要求8所述的多应用程序共享通信连接的方法,其特征在于,所述启动模块还用于将自身所在应用程序的程序标识传递给对应的信息推送接口;
所述系统还包括:
程序标识传递模块,封装于各信息推送接口中,用于将接收的程序标识传递给所述推送组件实例;
程序标识发送模块,封装于各推送组件中,用于通过所述推送组件实例将接收的程序标识通过所述通信连接发送给所述消息服务器;
程序标识接收模块,运行于消息服务器,用于通过所述通信连接接收程序标识;
程序连接关系建立模块,运行于消息服务器,用于建立程序标识与接收所述程序标识的通信连接的连接标识的对应关系。
11.根据权利要求10所述的多应用程序共享通信连接的方法,其特征在于,所述系统还包括:
消息生成模块,运行于消息服务器,用于将目标应用程序的程序标识封装到待下发消息中;
消息发送模块,运行于消息服务器,用于查找目标应用程序的程序标识对应的连接标识,将封装好的消息通过查找到的连接标识对应的通信连接发送给对端的推送组件实例。
12.根据权利要求8所述的多应用程序共享通信连接的方法,其特征在于,所述系统还包括连接维持模块,封装于各推送组件中,用于在与消息服务器之间建立通信连接之后,通过所述推送组件实例从所述消息服务器拉取心跳包发送频率;
所述连接维持模块还用于当所述通信连接空闲时,通过所述推送组件实例按照心跳包发送频率通过所述通信连接发送心跳包,以维持所述通信连接。
13.根据权利要求8所述的多应用程序共享通信连接的方法,其特征在于,所述系统还包括连接关闭模块,封装于各推送组件中,用于通过所述推送组件实例监测各应用程序是否都已被关闭;
所述连接关闭模块还用于当各应用程序都已被关闭时,通过所述推送组件实例关闭所述通信连接。
14.根据权利要求13所述的多应用程序共享通信连接的方法,其特征在于,所述系统还包括唤醒设置模块,封装于各推送组件中,用于通过所述推送组件实例从连接信息提供服务器拉取唤醒策略;
所述唤醒设置模块还用于通过所述推送组件实例根据所述唤醒策略通过系统提示服务设置自身的运行进程的唤醒闹钟。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410290255.6A CN105306418B (zh) | 2014-06-24 | 2014-06-24 | 多应用程序共享通信连接的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410290255.6A CN105306418B (zh) | 2014-06-24 | 2014-06-24 | 多应用程序共享通信连接的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105306418A true CN105306418A (zh) | 2016-02-03 |
CN105306418B CN105306418B (zh) | 2019-03-01 |
Family
ID=55203178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410290255.6A Active CN105306418B (zh) | 2014-06-24 | 2014-06-24 | 多应用程序共享通信连接的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105306418B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106941713A (zh) * | 2017-05-16 | 2017-07-11 | 努比亚技术有限公司 | 一种降低移动终端功耗的方法及其装置 |
WO2017165999A1 (zh) * | 2016-03-28 | 2017-10-05 | 华为技术有限公司 | 网络服务实现方法、服务控制器及通信系统 |
CN107659664A (zh) * | 2017-10-30 | 2018-02-02 | 珠海格力电器股份有限公司 | 一种消息传输方法、装置及系统 |
CN109729001A (zh) * | 2018-12-19 | 2019-05-07 | 北京顺丰同城科技有限公司 | 一种消息推送方法及装置 |
CN109995877A (zh) * | 2019-04-12 | 2019-07-09 | 上海连尚网络科技有限公司 | 信息推送方法和装置 |
CN110120897A (zh) * | 2019-04-22 | 2019-08-13 | 国家计算机网络与信息安全管理中心 | 链路探测方法、装置、电子设备及机器可读存储介质 |
CN110351245A (zh) * | 2019-06-12 | 2019-10-18 | 深圳市奥克多普科技有限公司 | App推送消息sdk包的生成方法及推送消息系统 |
CN110634230A (zh) * | 2019-09-06 | 2019-12-31 | 深圳市智莱科技股份有限公司 | 一种自动售卖机的应用程序与硬件设备信息交互的方法 |
CN111464642A (zh) * | 2020-04-01 | 2020-07-28 | 北京四维智联科技有限公司 | 车机消息推送的方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1592303A (zh) * | 2003-08-28 | 2005-03-09 | 国际商业机器公司 | 用于应用实例级工作负荷分配亲合性的方法和系统 |
US20080066079A1 (en) * | 2006-09-11 | 2008-03-13 | Andreas Nauerz | Context-Exchange Mechanism For Accumulating And Propagating Contextual Information Between Applications |
CN101216780A (zh) * | 2007-01-05 | 2008-07-09 | 中兴通讯股份有限公司 | 在对称多处理体系下实现多实例线程通信的方法及装置 |
CN101403981A (zh) * | 2008-11-07 | 2009-04-08 | 中兴通讯股份有限公司 | 手机应用程序运行状态的管理方法和系统 |
CN102291808A (zh) * | 2011-06-03 | 2011-12-21 | 莫雅静 | 一种网络通信方法、通信设备以及通信设备的中间件 |
-
2014
- 2014-06-24 CN CN201410290255.6A patent/CN105306418B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1592303A (zh) * | 2003-08-28 | 2005-03-09 | 国际商业机器公司 | 用于应用实例级工作负荷分配亲合性的方法和系统 |
US20080066079A1 (en) * | 2006-09-11 | 2008-03-13 | Andreas Nauerz | Context-Exchange Mechanism For Accumulating And Propagating Contextual Information Between Applications |
CN101216780A (zh) * | 2007-01-05 | 2008-07-09 | 中兴通讯股份有限公司 | 在对称多处理体系下实现多实例线程通信的方法及装置 |
CN101403981A (zh) * | 2008-11-07 | 2009-04-08 | 中兴通讯股份有限公司 | 手机应用程序运行状态的管理方法和系统 |
CN102291808A (zh) * | 2011-06-03 | 2011-12-21 | 莫雅静 | 一种网络通信方法、通信设备以及通信设备的中间件 |
Non-Patent Citations (1)
Title |
---|
王克锋: "《基于Android的信息推送管理系统的设计和实现》", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017165999A1 (zh) * | 2016-03-28 | 2017-10-05 | 华为技术有限公司 | 网络服务实现方法、服务控制器及通信系统 |
CN106941713A (zh) * | 2017-05-16 | 2017-07-11 | 努比亚技术有限公司 | 一种降低移动终端功耗的方法及其装置 |
CN107659664A (zh) * | 2017-10-30 | 2018-02-02 | 珠海格力电器股份有限公司 | 一种消息传输方法、装置及系统 |
CN109729001A (zh) * | 2018-12-19 | 2019-05-07 | 北京顺丰同城科技有限公司 | 一种消息推送方法及装置 |
CN109995877A (zh) * | 2019-04-12 | 2019-07-09 | 上海连尚网络科技有限公司 | 信息推送方法和装置 |
CN110120897A (zh) * | 2019-04-22 | 2019-08-13 | 国家计算机网络与信息安全管理中心 | 链路探测方法、装置、电子设备及机器可读存储介质 |
CN110351245A (zh) * | 2019-06-12 | 2019-10-18 | 深圳市奥克多普科技有限公司 | App推送消息sdk包的生成方法及推送消息系统 |
CN110634230A (zh) * | 2019-09-06 | 2019-12-31 | 深圳市智莱科技股份有限公司 | 一种自动售卖机的应用程序与硬件设备信息交互的方法 |
CN110634230B (zh) * | 2019-09-06 | 2021-12-07 | 深圳市智莱科技股份有限公司 | 一种自动售卖机的应用程序与硬件设备信息交互的方法 |
CN111464642A (zh) * | 2020-04-01 | 2020-07-28 | 北京四维智联科技有限公司 | 车机消息推送的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105306418B (zh) | 2019-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105306418A (zh) | 多应用程序共享通信连接的方法和系统 | |
CN102761864B (zh) | 一种数据传输的方法、系统及设备 | |
CN101291348B (zh) | 一种无线隧道唤醒通知方法 | |
CN102035880B (zh) | 一种保持连接的方法及装置 | |
CN108092884A (zh) | 一种无线接入网关系统及应用方法 | |
CN103401896B (zh) | 一种多Android客户端服务共享方法及系统 | |
WO2011130940A1 (zh) | 多业务统一处理方法及统一业务平台 | |
US11467647B2 (en) | Method and system for low power internetwork communication with machine devices | |
CN102891877A (zh) | 实现终端应用的在线处理系统及方法 | |
Azzara et al. | Middleware solutions in WSN: The IoT oriented approach in the ICSI project | |
CN101895975A (zh) | 一种进入待机模式的方法及其应用的移动终端 | |
CN110022577A (zh) | 蜂窝iot下行业务发送方法、装置和计算机可读存储介质 | |
CN104463670A (zh) | 一种基于Websocket的银行前置交易系统的搭建方法 | |
CN103685485B (zh) | 移动终端VoIP通讯音频管理系统 | |
CN106935007B (zh) | 移动网络表计上行连接管理的方法 | |
CN104735816A (zh) | 控制无线网络直连群组中无线设备断开的方法及无线设备 | |
CN103634185A (zh) | 基于信息交换总线的二次安全防护同步跨区服务方法 | |
CN109039427B (zh) | 一种船舶监控管理装置 | |
CN105007313A (zh) | 一种终端接入方法和用于节能服务的海量数据传输系统 | |
CN105357387B (zh) | 一种唤醒终端的方法、装置及系统 | |
CN109218142A (zh) | 一种基于OneM2M协议物联网平台终端接入方法和装置 | |
CN103686863A (zh) | 实现控制信令传送的方法及系统 | |
CN102281334A (zh) | 一种有线终端的管理控制方法及系统以及接入服务器 | |
CN102664965B (zh) | 一种实现应急指挥系统分级组网的装置及其工作方法 | |
KR20140103557A (ko) | Sdp 기반 분산 디바이스 자원 객체 연동 서비스 제공 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |