CN103401896B - 一种多Android客户端服务共享方法及系统 - Google Patents
一种多Android客户端服务共享方法及系统 Download PDFInfo
- Publication number
- CN103401896B CN103401896B CN201310294730.2A CN201310294730A CN103401896B CN 103401896 B CN103401896 B CN 103401896B CN 201310294730 A CN201310294730 A CN 201310294730A CN 103401896 B CN103401896 B CN 103401896B
- Authority
- CN
- China
- Prior art keywords
- service
- android
- application
- client
- web
- 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.)
- Active
Links
Abstract
本发明提供一种多Android客户端共享服务的方法及系统,多个客户端采用同一名称的服务,并根据服务的优先级保证只有最高优先级的服务启动,当最高优先级的服务取到内容后,绑定应用ID进行广播分发,当应用检测到接受到的广播数据属于当前应用则进行处理,如果不是,则跳过处理。该技术依赖web后台推送处理系统,web后台接受android前台的注册,并把内容通过socket连接发送到android共享服务,并把web页面的信息推送到android前台;客户端SDK开发包,提供共享服务和推送连接的核心功能,共享服务是根据同名服务的优先级比较来保证只有一个服务处于运行状态。客户端连接功能提供断线重连和心跳检测来保证和服务端的稳定连接。本发明建立的共享机制灵活、节省资源、完备、定义和实现都很方便。
Description
技术领域
本发明涉及Android的服务,广播机制,运行服务信息的获取,特别是一种多Android客户端服务共享方法,属通信领域。
背景技术
Android系统的广播机制是一种消息订阅/发布机制,因此,使用这种消息驱动模型的第一步便是订阅消息;而对Android应用程序来说,订阅消息其实就是注册广播接收器。注册的方法有两种,一种是静态注册,一种是动态注册。在Android的广播机制中,动态注册的优先级是要高于静态注册优先级的,因此在必要的情况下,我们是需要动态注册广播接收器的。获取Android系统中进程,任务,服务信息,需要通过ActivityManager类来实现。通过类名可以取得推送消息的客户端服务。并通PackageManager取得当前应用的应用信息。
安装在设备中的每一个Android包文件(.apk)都会被分配到一个属于自己的统一的Linux用户ID,并且为它创建一个沙箱,以防止影响其他应用程序(或者其他应用程序影响它)。用户ID在应用程序安装到设备中时被分配,并且在这个设备中保持它的永久性。Android进程之间是不能共享服务的,有时两个Android程序的服务可能处理的是相同的内容,这样每个服务程序都会和后台建立联系,而这个没有必要的,其实只要建立一个服务,当取到内容后,再进行分发就可以了。
发明内容
在发明内容部分中引入了一系列简化形式的概念,这将在具体实施方式部分中进一步详细说明。本发明的发明内容部分并不意味着要试图限定出所要求保护的技术方案的关键特征和必要技术特征,更不意味着试图确定所要求保护的技术方案的保护范围。
针对以上问题,本发明提供了一种多Android客户端服务共享方法。
本发明采用的技术方案如下:
一种多Android客户端服务共享方法,其特征在于多个客户端采用同一名称的服务,并根据服务的优先级保证只有最高优先级的服务启动,当最高优先级的服务取到内容后,绑定应用ID进行广播分发,当应用检测到接受到的广播数据属于当前应用则进行处理,如果不是,则跳过处理。
根据本发明的共享方法,每个Android客户端引用共同的SDK开发包,启动同名的服务。
根据本发明的共享方法,每个Android客户端启动服务后,在程序中动态注册接收器,监听客户端和服务端的连接、断开、停止当前服务的事件,当接收到注册事件时,就进行处理。
根据本发明的共享方法,每个Android客户端都要在AndroidManifest.xml中静态声明处理共享服务的接收器,并注册接受推送消息的事件。
根据本发明的共享方法,每个Android客户端都要在AndroidManifest.xml预先设置应用的应用标识ID、优先级、连接主机的IP地址、连接主机的端口。
一种多Android客户端服务共享系统,其特征在于包括如下核心模块:
推送Android后台运行服务:当Android客户端退出后,后台运行服务还在执行,保证了web后台的数据能够实时的发送到前台,并进行分发处理;
Android推送服务动态注册广播接受器:当后台服务启动时,服务才注册广播接受器,后台服务关闭时,就会关闭注册的广播接受器,即广播接受器和后台运行服务在一个生命周期里,以使得广播接受器只在服务运行时才会接受广播通知,并处理接受到的广播;
连接web后台的Android客户端连接程序:Android客户端通过socket或者http方式建立和web后台应用的连接,接受web后台的消息;
服务检测模块:根据服务名字检测当前是否存在可运行的服务,进而确定是否要启动当前应用的服务,从而保证多个客户端共享一个同名服务;
推送Android调用包代理接口:向其他Android应用提供一个通用的并且封装好的调用接口,接口提供了服务的启动、关闭及web后台连接的建立、断开;
Android应用调用开发包中的代理接口:Android应用通过开发包中的代理接口来访问相关资源,代理接口是固定的,保证了所有的应用调用的是相同的接口,方便之后开发包的升级。
Android应用静态注册广播接收器:各个Android应用静态注册广播接收器,这样可以保证在应用未启动就能接收到服务端的推送消息。当每个应用接到消息后,就可以进行分别处理。
进一步的,连接web后台的Android客户端连接程序模块中,为了保证能稳定的取到消息,在Android客户端通过socket或者http方式建立和web后台应用的连接之前,实施心跳检测和断线重连功能。
web后台接受Android前台的注册,并把内容通过socket或者http连接发送到Android共享服务,并把web页面的信息推送到Android前台;客户端SDK开发包,提供共享服务和推送连接的核心功能,共享服务是根据同名服务的优先级比较来保证只有一个服务处于运行状态。如果有服务1和2,如果服务1已经启动,服务2启动时会与服务1进行优先级进行比较,如果优先级高,则发出一个停止服务的通知,并且启动服务2,服务1接收到通知会停止服务;如果服务2优先级较低则不启动。客户端连接功能提供断线重连和心跳检测来保证和服务端的稳定连接。本发明建立的共享机制灵活、节省资源、完备、定义和实现都很方便。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例子及及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明消息推送系统的结构示意图;
图2是根据本发明基于长连接的动态心跳检测示意图;
图3是根据本发明的共享服务示意图;
图4是根据本发明的服务代理示意图;
具体实施方式
在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然而,对于本领域技术人员来说显而易见的是,本发明可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本发明发生混淆,对于本领域公知的一些技术特征未进行描述。
为了彻底了解本发明,将在下列的描述中提出详细的细节,显然,本发明的施行不限定于通信领域的技术人员所熟习的特殊细节。本发明的较佳实施例详细描述如下,然而除了这些详细描述外,本发明还可以具有其他实施方式。
本发明提供了一种多Android客户端服务共享方法,其特征在于多个客户端采用同一名称的服务,并根据服务的优先级保证只有最高优先级的服务启动,当最高优先级的服务取到内容后,绑定应用ID进行广播分发,当应用检测到接受到的广播数据属于当前应用则进行处理,如果不是,则跳过处理。
进一步的,每个Android客户端引用共同的SDK开发包,启动同名的服务。每个Android客户端启动服务后,在程序中动态注册接收器,监听客户端和服务端的连接、断开、停止当前服务的事件,当接收到注册事件时,就进行处理。每个Android客户端都要在AndroidManifest.xml中静态声明处理共享服务的接收器,并注册接受推送消息的事件。每个Android客户端都要在AndroidManifest.xml预先设置应用的应用标识ID、优先级、连接主机的IP地址、连接主机的端口。
本发明同时提供了一种多Android客户端服务共享系统,包括如下核心模块:
推送Android后台运行服务:当Android客户端退出后,后台运行服务还在执行,保证了web后台的数据能够实时的发送到前台,并进行分发处理;
Android推送服务动态注册广播接受器:当后台服务启动时,服务才注册广播接受器,后台服务关闭时,就会关闭注册的广播接受器,即广播接受器和后台运行服务在一个生命周期里,以使得广播接受器只在服务运行时才会接受广播通知,并处理接受到的广播;
连接web后台的Android客户端连接程序:Android客户端通过socket或者http方式建立和web后台应用的连接,接受web后台的消息;
服务检测模块:根据服务名字检测当前是否存在可运行的服务,进而确定是否要启动当前应用的服务,从而保证多个客户端共享一个同名服务;
推送Android调用包代理接口:向其他Android应用提供一个通用的并且封装好的调用接口,接口提供了服务的启动、关闭及web后台连接的建立、断开;
Android应用调用开发包中的代理接口:Android应用通过开发包中的代理接口来访问相关资源,代理接口是固定的,保证了所有的应用调用的是相同的接口,方便之后开发包的升级。
Android应用静态注册广播接收器:各个Android应用静态注册广播接收器,这样可以保证在应用未启动就能接收到服务端的推送消息。当每个应用接到消息后,就可以进行分别处理。
进一步的,在连接web后台的Android客户端连接程序模块中,为了保证能稳定的取到消息,在Android客户端通过socket或者http方式建立和web后台应用的连接之前,实施心跳检测和断线重连功能。
本发明在现有Android现有服务基础上,增加了一个共享服务管理模块。这个管理模块提供了对服务的启动、关闭、连接后台和断开后台连接操作;并且提供了保证唯一共享服务的策略。这个模块可以作为独立开发包,加入到其他Android程序中。
此外,本发明在连网建立长连接这个环节上,增加了心跳检测和断线重连功能,心跳检测根据一定的策略来确定检测网络的时机,在保证网络稳定性的同时,避免过多耗时的连网检测操作。当检测到长连接断开后,发送连网请求,再次建立与后台推送服务的长连接。
共享服务管理模块的调用采用代理方式,多Android客户端通过代理接口,访问服务的启动、关闭、连网和断网等操作。因为直接操作服务过于复杂,对服务每种操作进行封装,方便记忆和使用。
下面说明以上提到的代理服务接口的操作:
启动:当Android客户端检测到当前服务的优先级大于共享服务的优先级时,发送关闭共享服务的广播,并启动当前服务,服务启动后将作为共享服务。
关闭:当共享服务接收到关闭服务请求后,分析请求的内容,内容涉及web后台服务地址、端口和发送请求的Android客户端的服务优先级。
连接后台:当共享服务接收到连网请求后,会先判断当前的网络状态,如果网络不可用,则直接跳过处理,如果网络可用,则向web后台发起连接操作。
断开后台连接:收到断开后台连接请求后,先判断当前连接状态,如果当前网络是连接状态,则断开和后台的连接。
下面结合附图对根据本发明实施例的模块及处理流程进行说明。
参考图1,说明根据本发明实施例的消息推送系统。如图1所示,该用于共享服务的消息推送系统包括:
消息推送服务器S101,用于接收Android共享服务的注册,并对注册的设备进行管理。同时,web后台接受输入的消息内容,并根据规则把消息内容推送到Android共享服务。
Android共享服务S102,用于和web后台的通信,进行设备的注册,同时接收消息推送服务器发送的消息,并进行转发。Android应用广播接收器接收到内容后,会拿本身的应用ID和消息的应用ID做匹配,如果是一样的,则接收并进行处理。如果不是,则抛弃不处理。
参考图2,说明了动态心跳长连接技术,S201共享服务和后台消息推送服务器建立长连接,并一直保持,这样能保证后台的数据能够实时的传递到Android客户端。由于网络问题等意外原因,会导致连接断开,这时就要进行重新连接。有时过于频繁的心跳检测是没有必要的,这时我们就要考虑一个策略,在既要保证能及时的检测到网络状态,又能提高系统的利用率。当检测线程检测到连接正常情况后,会把S204休眠计数器加1,S205会进行下一次休眠时间的计算,然后进入休眠状态S206。当检测到长连接断开后,会进行重新连接,并重置休眠计数器,减少休眠的时间,提高重连的成功率。
如图3所示,根据本发明实施例的共享服务运行流程主要包括以下步骤:
S301,每个Android客户端都包含了一个服务程序,但是只有一个服务程序能够作为共享服务。当客户端启动服务时都要和共享服务进行比较,来确定自身服务是否启动,通过这样的方式来保证服务唯一,从而达到共享服务的目的。
S302,当应用检测到当前服务的优先级高于共享服务的优先级时,当前应用就会发送一个关闭共享服务的广播,共享服务接收到广播后,就后关闭服务。
S303,当应用的服务级别比较低,则应用共享之前的服务,接收共享服务发送的内容。
S304,当应用的服务级别高时,就会启动自身的服务来充当共享服务。
S305,共享服务来接收web后台的内容,并保持和后台稳定的长连接,当接收到内容后,通过广播的方式把内容发送给Android客户端。
S306,共享服务会注册一个广播接收器,来接收Android客户端的操作,如服务的启动和关闭、后台服务的连接和断开。
S307,当服务接收到一个服务关闭广播时,会进行服务优先级的判断,当共享服务优先级较低时,会关闭服务。
S308,Android客户端能够接收到web推送服务后台的推送消息,完全依靠共享服务和web推送服务后台的连接。共享服务通过socket来和web推送服务后台建立连接。
S309,Android客户端也可以主动发起断开和消息服推送服务器的连接。
共享服务的使用是通过代理方式来访问的,Android客户端通过代理方式来操作共享服务。如图4所示:
S401,Android客户端如果要调用服务功能,都要通过代理接口,Android应用不能直接访问服务功能。这样增强了安全性,也方便开发,开发者不需要关注具体的实现逻辑。
S402,代理接口封装了四种访问服务的方式,包括服务的启动和关闭、和推送服务的连接和断开。
S403,提供共享服务,接收推送服务内容和进行内容分发。
本发明已经通过上述实施例进行了说明,但应当理解的是,上述实施例只是用于举例和说明的目的,而非意在将本发明限制于所描述的实施例范围内。此外本领域技术人员可以理解的是,本发明并不局限于上述实施例,根据本发明的教导还可以做出更多种的变型和修改,这些变型和修改均落在本发明所要求保护的范围以内。本发明的保护范围由附属的权利要求书及其等效范围所界定。
Claims (2)
1.一种多Android客户端服务共享系统,其特征在于,包括如下模块:
推送Android后台运行服务模块:当Android客户端退出后,后台运行服务还在执行,保证了web后台的数据能够实时的发送到前台,并进行分发处理;
Android推送服务动态注册广播接受器模块:当后台服务启动时,服务才注册广播接受器,后台服务关闭时,就会关闭注册的广播接受器,即广播接受器和后台运行服务在一个生命周期里,以使得广播接受器只在服务运行时才会接受广播通知,并处理接受到的广播;
连接web后台的Android客户端连接程序模块:Android客户端通过socket或者http方式建立和web后台应用的连接,接受web后台的消息;
服务检测模块:根据服务名字检测当前是否存在可运行的服务,进而确定是否要启动当前应用的服务,从而保证多个客户端共享一个同名服务;
推送Android调用包代理接口模块:向其他Android应用提供一个通用的并且封装好的调用接口,接口提供了服务的启动、关闭及web后台连接的建立、断开;
Android应用调用开发包中的代理接口模块:Android应用通过开发包中的代理接口来访问相关资源,代理接口是固定的,保证了所有的应用调用的是相同的接口,方便之后开发包的升级;
Android应用静态注册广播接收器模块:各个Android应用静态注册广播接收器,这样可以保证在应用未启动就能接收到服务端的推送消息,当每个应用接到消息后,就可以进行分别处理。
2.根据权利要求1所述的多Android客户端服务共享系统,其特征在于,在所述连接web后台的Android客户端连接程序模块中,为了保证能稳定的取到消息,在Android客户端通过socket或者http方式建立和web后台应用的连接之前,实施心跳检测和断线重连功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310294730.2A CN103401896B (zh) | 2013-07-15 | 2013-07-15 | 一种多Android客户端服务共享方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310294730.2A CN103401896B (zh) | 2013-07-15 | 2013-07-15 | 一种多Android客户端服务共享方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103401896A CN103401896A (zh) | 2013-11-20 |
CN103401896B true CN103401896B (zh) | 2016-06-22 |
Family
ID=49565420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310294730.2A Active CN103401896B (zh) | 2013-07-15 | 2013-07-15 | 一种多Android客户端服务共享方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103401896B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105610888A (zh) * | 2015-09-08 | 2016-05-25 | 华南师范大学 | 基于安卓的利用socket推送消息的方法和系统 |
CN105847366A (zh) * | 2016-03-29 | 2016-08-10 | 乐视控股(北京)有限公司 | 一种共享推送服务的方法和装置 |
CN106708617B (zh) * | 2016-12-23 | 2019-12-03 | 武汉斗鱼网络科技有限公司 | 一种基于Service的应用进程保活系统及保活方法 |
CN106851016B (zh) | 2017-03-10 | 2019-03-19 | Oppo广东移动通信有限公司 | 广播消息排队的方法、装置及终端 |
CN108804236B (zh) * | 2017-05-04 | 2022-05-03 | Tcl科技集团股份有限公司 | 一种aidl文件的共享方法及系统 |
CN107229528B (zh) * | 2017-05-27 | 2021-07-23 | 北京奇虎科技有限公司 | 消息推送的多路复用方法及装置、电子设备 |
CN109150956B (zh) * | 2018-06-25 | 2021-04-16 | 百度在线网络技术(北京)有限公司 | 一种推送sdk的实现方法、装置、设备和计算机存储介质 |
CN109218393B (zh) * | 2018-07-24 | 2021-09-21 | 百度在线网络技术(北京)有限公司 | 一种推送的实现方法、装置、设备和计算机存储介质 |
CN109871267B (zh) * | 2018-12-26 | 2023-05-09 | 国网甘肃省电力公司 | 一种基优先级的一键启停方法及系统 |
WO2021017825A1 (zh) * | 2019-07-26 | 2021-02-04 | 华为技术有限公司 | 管理进程的方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101471843A (zh) * | 2007-12-25 | 2009-07-01 | 村田机械株式会社 | 中继服务器以及中继通信系统 |
CN101924798A (zh) * | 2010-09-08 | 2010-12-22 | 北京大学 | 一种基于文件类型的Android构件透明加载方法及系统 |
CN101977221A (zh) * | 2010-10-27 | 2011-02-16 | 宇龙计算机通信科技(深圳)有限公司 | 实现资源共享的方法、装置及系统 |
CN102164148A (zh) * | 2010-05-18 | 2011-08-24 | 卡巴斯基实验室封闭式股份公司 | 用于便携式信息设备的组安全 |
CN102823221A (zh) * | 2010-03-26 | 2012-12-12 | 高通股份有限公司 | 网络资源租赁 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012044557A2 (en) * | 2010-10-01 | 2012-04-05 | Imerj, Llc | Auto-configuration of a docked system in a multi-os environment |
-
2013
- 2013-07-15 CN CN201310294730.2A patent/CN103401896B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101471843A (zh) * | 2007-12-25 | 2009-07-01 | 村田机械株式会社 | 中继服务器以及中继通信系统 |
CN102823221A (zh) * | 2010-03-26 | 2012-12-12 | 高通股份有限公司 | 网络资源租赁 |
CN102164148A (zh) * | 2010-05-18 | 2011-08-24 | 卡巴斯基实验室封闭式股份公司 | 用于便携式信息设备的组安全 |
CN101924798A (zh) * | 2010-09-08 | 2010-12-22 | 北京大学 | 一种基于文件类型的Android构件透明加载方法及系统 |
CN101977221A (zh) * | 2010-10-27 | 2011-02-16 | 宇龙计算机通信科技(深圳)有限公司 | 实现资源共享的方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103401896A (zh) | 2013-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103401896B (zh) | 一种多Android客户端服务共享方法及系统 | |
EP2645636B1 (en) | Home gateway, cloud server, and method for communication therebetween | |
US20130191526A1 (en) | Open plug-in management platform and plug-in management method implemented on browser | |
US20100228843A1 (en) | Element management system in wireless communication network | |
CN107682460B (zh) | 一种分布式存储集群数据通信方法及系统 | |
WO2016197861A1 (zh) | 远程管理方法、被管理设备、管理设备和智能电视系统 | |
WO2013093810A1 (en) | Bandwidth management in a home network | |
CN112511598A (zh) | 一种投屏显示方法、智能终端、存储介质 | |
CN109040295A (zh) | 异常断线的确定方法及装置、终端及存储介质 | |
US8224945B2 (en) | Memory management system and method for open platform | |
CN116662020B (zh) | 应用服务动态管理方法、系统、电子设备及存储介质 | |
CN104750544A (zh) | 应用于分布式系统中的进程管理系统及进程管理方法 | |
CN116633775B (zh) | 一种多容器网络接口的容器通信方法及系统 | |
CN103618967A (zh) | 一种移动终端与电视端互动的方法和装置 | |
CN104038390A (zh) | 一种基于netlink的linux服务器集群统一外设事件监听方法 | |
CN111309501A (zh) | 高可用分布式队列 | |
CN101141474B (zh) | 一种基于超文本传输协议的通讯系统及方法 | |
WO2012068840A1 (zh) | 客户端/服务端架构下的调度方法和服务器 | |
CN104144414A (zh) | 一种信息的拦截方法及装置 | |
CN103023937A (zh) | 一种网络文件的分发方法及系统 | |
US20080209003A1 (en) | Monitoring device and monitoring method | |
US8032928B2 (en) | Methods, devices, and computer program products for controlling wireless connection access | |
CN103428357A (zh) | 实现移动终端操作系统上的本地服务共享的方法及装置 | |
CN115297162A (zh) | 消息的发送方法和装置、存储介质及电子装置 | |
CN105049519B (zh) | 一种基于soap协议的消息路由方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |