一种安卓平台下应用进程保活的实现方法技术

技术编号:15791750 阅读:256 留言:0更新日期:2017-07-09 21:56
本发明专利技术提供了一种安卓平台下应用进程保活的实现方法,其包括如下步骤:步骤S1:安卓系统中,有两个以上的应用集成了服务工具包;步骤S2:应用1启动;步骤S3:应用1扫描系统中运行的所有入口服务组件,判断是否存在其他入口服务组件,如果不存在其他入口服务组件,则执行步骤S4后再执行步骤S5;如果存在其他入口服务组件,则跳过步骤S4直接执行步骤S5;步骤S4:应用1启动自己的代理服务组件保持长连接,应用1通过入口服务组件拉起已经注册的应用2;步骤S5:应用1绑定已经存在的应用2的守护服务组件;步骤S6:应用2回绑应用1的守护服务组件;步骤S7:应用1与应用2形成互守,多个应用形成网状互守。

【技术实现步骤摘要】
一种安卓平台下应用进程保活的实现方法
本专利技术涉及在安卓(Android)平台下应用进程保活的一种实现方式。具体而言是在多个应用开发过程中集成本方案提供的软件开发工具包,通过安卓平台原生的进程间通信机制实现多个进程间的网状监听和连接,从而实现多应用进程之间的互守,进程被系统回收后的及时拉起及保活,最终实现应用进程与云端长连接的保持和云端推送消息的及时送达。
技术介绍
目前苹果公司的iOS系统和Google公司的Android系统已经几乎占据了移动操作系统的整个市场份额,苹果公司在iOS系统中已经实现了统一的消息推送规范APNs,Google公司也在Android中内置了GMS模块以支持对GCM,但是GCM在国内发展得并不顺利,出现了水土不服的现象,主要原因是由于国内网络运营商NAT超时问题和一些ROM厂商直接阉割掉了GMS模块,所以在Android平台下各种第三方推送框架如雨后春笋般出现,例如ROM厂商的有小米推送,华为推送等,第三方公司的有个推,极光推送等,应用平台公司的有百度推送,信鸽等。我们知道有效的推送可以将云端的消息很及时的通过应用保持的长连接送达到设备,这样更有利于及时通知用户和激活设备活跃。但是长连接的存活依赖于应用进程的存活,所以能让进程在系统中驻留而不被系统回收是很多应用开发商试图解决的问题。鉴于移动平台的特性,操作系统在管理移动设备的内存时往往会将已经切换到后台或占用较大内存的应用进程杀掉以释放更多的内存供其他应用程序使用,其实这种策略在传统桌面操作系统中也是存在的,只是由于桌面机的内存足够大以至于很多用户无法体会到而已。对于应用运营人员来说,应用被操作系统回收而非用户本意行为会有很多弊端,例如推送的消息不能送达到设备,应用被杀说明用户处于一种不活跃状态,运营人员无法与用户进行更多的互动。所以对于移动端应用开发人员来说,进程保活是一直都在试图解决的问题。目前已经有一些方法可在不同的Android版本上实现此功能,例如一像素点方案,绑定前台服务方案,通过本地代码开发一个动态链接库Fork一个Linux子进程的方案,这些都是利用了系统的漏洞而非正常的方式实现,受限于Android系统版本。一像素点方案:通过应用在Android的主屏幕中开出一个只有一个像素的悬浮框对用户实现了隐藏,但是系统认为属于一个绑定了界面的前台应用,所以在某些条件下会保活。该方案的缺点是:破坏Android生态,需要为应用开启悬浮窗权限。前台服务方案:前台服务是通过提升应用的优先级而实现的一种保活方式,这种方式需要服务关联一个顶部通知栏的一个通知,虽然也有一些利用Android系统的漏洞可以隐藏掉通知的方法存在,但是Google随时可能修补这个漏洞。该方案的缺点是:破坏Android生态,长期驻留在一个通知。FORK本地进程方案:通过本地代码开发调用Linux系统的Fork函数创建一个Linux的进程来守护应用的主进程。该方案的缺点是:Android5.0以后由于策略的调整此方法基本失效。本专利技术所采用的方案是基于Android系统原生的进程间通信能力,采用完全Android所支持的开发方式通过一定的策略实现进程保活,几乎不会受到Android版本的限制,但是可能会受一些第三方安全软件的链式启动管理策略的限制,这也是为了保护安卓用户建立良好的Android生态环境而设置。
技术实现思路
针对现有技术的缺点,本专利技术的目的是提供一种安卓平台下应用进程保活的实现方法,其采用完全Android所支持的开发方式通过一定的策略实现进程保活,几乎不会受到Android版本的限制。为了实现上述目的,本专利技术提供了一种安卓平台下应用进程保活的实现方法,该方法提供了一种服务工具包,服务工具包包括入口服务组件、守护服务组件和代理服务组件;该方法的实现过程如下:步骤S1:安卓系统中,有两个以上的应用集成了服务工具包;步骤S2:应用1启动;步骤S3:应用1扫描系统中运行的所有入口服务组件,判断是否存在其他入口服务组件,如果不存在其他入口服务组件,则执行步骤S4后再执行步骤S5;如果存在其他入口服务组件,则跳过步骤S4直接执行步骤S5;步骤S4:应用1启动自己的代理服务组件保持长连接,应用1通过入口服务组件拉起已经注册的应用2;步骤S5:应用1绑定已经存在的应用2的守护服务组件;步骤S6:应用2回绑应用1的守护服务组件;步骤S7:应用1与应用2形成互守,多个应用形成网状互守。本专利技术涉及到的一些名词解释如下:安卓(Android):是目前市场上主流的移动端操作系统,由Google公司开发并已经开源,国内很多手机制造商在此平台下重新定制了ROM版本,例如小米的MIUI等。软件开发工具包(SDK):是一种在软件开发中集成第三方模块的形式,包括一些函数库和资源,工具等都可以放入SDK中供第三方使用。安卓接口定义语言(AIDL):为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(RemoteProcedureCall,RPC)方式来实现。与很多其他的基于RPC的解决方案一样,Android使用一种接口定义语言(AndroidInterfaceDefinitionLanguage,AIDL)来公开服务的接口。应用MAIN/PUSH进程:一般的应用为了控制内存的使用会将一个应用拆分为MAIN进程和PUSH进程,MAIN进程负责应用的业务逻辑处理(例如图片,相机等占用内存较多的部分),PUSH进程主要完成网络方面的管理并与云端进行通信。本专利技术实现的基本原理描述如下:通过AIDL定义的一个绑定成功的回调接口用来通知被绑定的服务主动绑定应用方的组件信息。被绑定方的服务接收到此信息后回绑主动绑定方的服务,从而达到两个应用进程的互绑互守,后来的第三个服务加入后形成网状互守。本专利技术提供的SDK包含了三个核心服务,都运行在每个应用的独立的PUSH进程中,这三个服务分别为:入口服务组件:是某个应用集成了本方案SDK的唯一标识(应用注册了这个服务就说明集成了本方案提供的SDK)和应用的MAIN进程启动子进程的入口服务,同时也用来加载绑定算法。守护服务组件:用来实现AIDL接口供其他应用绑定和传递信息,属于被绑定方的目标节点。代理服务组件:用来保持与云端长连接的服务,一台设备上只存在一个代理服务组件,即多个应用共用一条长连接。根据本专利技术另一具体实施方式,执行步骤S7形成网状互守之后,当应用1被系统自动回收或被用户主动杀掉,则执行步骤S8,步骤S8包括如下步骤:步骤S81:应用2和应用3收到应用1被杀通知,检查是否存在运行的代理服务组件,如果不存在运行的代理服务组件,则执行步骤S82后再执行步骤S83;如果存在运行的代理服务组件,则跳过步骤S82直接执行步骤S83;步骤S82:应用2和应用3通过负载均衡算法启动代理服务组件,保证了系统中只存在一个代理服务组件,实现了负载均衡;步骤S83:应用2和应用3同时判断系统中运行的互守的入口服务组件是否少于2个(可定制),如果条件成立则再次拉起被回收掉的应用进程以保证有足够的应用进行互守,如果条件不成立则流程结束。本方案中,采用这种模型可以实现多个应用进程的互守,多应用互相绑定实现网状的相互看本文档来自技高网
...
一种安卓平台下应用进程保活的实现方法

【技术保护点】
一种安卓平台下应用进程保活的实现方法,所述方法提供了一种服务工具包,所述服务工具包包括入口服务组件、守护服务组件和代理服务组件;所述方法的实现过程如下:步骤S1:安卓系统中,有两个以上的应用集成了所述服务工具包;步骤S2:应用1启动;步骤S3:判断是否存在其他所述入口服务组件,如果不存在其他所述入口服务组件,则执行步骤S4后再执行步骤S5;如果存在其他所述入口服务组件,则跳过步骤S4直接执行步骤S5;步骤S4:应用1启动自己的所述代理服务组件保持长连接,应用1通过所述入口服务组件拉起已经注册的应用2;步骤S5:应用1绑定已经存在的应用2的所述守护服务组件;步骤S6:应用2回绑应用1的所述守护服务组件;步骤S7:应用1与应用2形成互守,多个应用形成网状互守。

【技术特征摘要】
1.一种安卓平台下应用进程保活的实现方法,所述方法提供了一种服务工具包,所述服务工具包包括入口服务组件、守护服务组件和代理服务组件;所述方法的实现过程如下:步骤S1:安卓系统中,有两个以上的应用集成了所述服务工具包;步骤S2:应用1启动;步骤S3:判断是否存在其他所述入口服务组件,如果不存在其他所述入口服务组件,则执行步骤S4后再执行步骤S5;如果存在其他所述入口服务组件,则跳过步骤S4直接执行步骤S5;步骤S4:应用1启动自己的所述代理服务组件保持长连接,应用1通过所述入口服务组件拉起已经注册的应用2;步骤S5:应用1绑定已经存在的应用2的所述守护服务组件;步骤S6:应用2回绑应用1的所述守护服务组件;步骤S7:应用1与应用2形成互守,多个应用形成网状互守。2.如权利要求1所述的实现方法,执行所述步骤S7形成网状互守之后,当应用1被系统自动回收或被用户主动杀掉,则执行步骤S8,所述步骤S8包括如下步骤:步骤S81:应用2和应用3收到应用1被杀通知,检查是否存在运行的所述代理服务组件,如果不存在运行的所述代理服务组件,则执行步骤S82后再执行步骤S83;如果存在运行的所述代理服务组件,则跳过步骤S82直接执行步骤S83;步骤S82:应用2和应用3通过负载均衡算法启动所述代理服务组件,保证了系统中只存在一个所述代理服务组件,实现了负载均衡;步骤S83:应用2和应用3同时判断系统中运行的互守的所述入口服务组件是否少于2个(可定制),如果条件成立则再次拉起被回收掉的应...

【专利技术属性】
技术研发人员:国兴旺
申请(专利权)人:广州启生信息技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1