一种安卓平台下应用进程的保活方法与流程

文档序号:16926010发布日期:2019-02-22 19:52阅读:588来源:国知局
一种安卓平台下应用进程的保活方法与流程

本发明涉及应用程序通信技术领域,特别是一种安卓平台下应用进程的保活方法。



背景技术:

目前安卓系统在市场上的份额占据了很大一部分,手机等依赖安卓系统的产品使用的频率越来越高,大量的用户群体使很多的公司看到了商业机会,因此出现了各种形态的app,而基本上所有的app都希望能够一直在后台运行,这样能够保证与用户的交互,特别是im(即时通信)类的应用;但受于google限制,安卓系统有一定的运行内存限制,在内存不够时则会杀掉一些优先级别低的应用或者用户主动杀死应用,造成与服务端失去连接。

目前的进程保活方案主要有以下几种:

(1)在service的onstart方法里返回statr_stick,这种方式在用户主动杀进程时,不能重新唤醒;

(2)单纯的设置应用service为前台服务,一般情况下不被杀,但部分定制rom会在应用切到后台即杀,会被forcestop杀死而不能重启;

(3)像素悬浮层,监控手机锁屏解锁事件,在屏幕锁屏时启动1个像素的activity,在用户解锁时将activity销毁掉,但在用户主动杀的情况下,不能重启;

(4)native进程拉起,但这种方式只在部分5.0以下系统的手机有效,5.0以上完全失效,不能重启;

(5)利用aidl实现进程间通信,这种方式处理时数据量庞大,且用户主动杀或利用第三方软件内存加速也不能重启进程;

因此,对于一些需要常驻后台的应用来说,急需一套进程保活的方案。



技术实现要素:

为解决现有技术中存在的问题,本发明的目的是提供一种安卓平台下应用进程的保活方法,该方法通过结合tcp长连接、辅助服务和前台服务的方法,保证了应用进程的存活,有助于应用业务的展开。

为实现上述目的,本发明采用的技术方案是:一种安卓平台下应用进程的保活方法,基于tcp长连接和辅助服务,实现进程的保活,具体包括以下步骤:

步骤s1、分别搭建作为socket服务端的主应用工程和作为socket客户端的后台监控应用工程;

步骤s2、主应用工程配置对应的xml文件监听所有的包,用于开启辅助服务后检测服务端service是否运行,以唤醒service,并增加相应的辅助服务权限,实现辅助服务子类;

步骤s3、将后台监控应用工程生成的apk文件放置于主应用工程的assets文件夹下,用于主应用工程启动辅助服务后后台监控应用工程的安装;

步骤s4、主应用工程启动,注册辅助服务连接成功的广播,检测是否开启辅助服务,如未开启则执行步骤s5,已开启则执行步骤s6;

步骤s5、引导用户开启辅助服务,开启后执行步骤s6;

步骤s6、辅助服务开启后监听到辅助服务连接成功的回调,并检测服务端service是否运行,未运行则唤醒执行步骤s8;判读是否已安装后台监控应用工程,未安装则执行步骤s7,已安装则执行步骤s8;

步骤s7、安装主应用工程assets文件夹下后台监控应用工程生成的apk文件;

步骤s8、主应用工程socket连接service服务端启动,判读后台监控应用工程是否在运行,未运行则启动台监控应用工程并连接到服务端;

步骤s9、主应用工程和监控应用工程互相发送心跳包,判读是否连接,未连接则启动,启动后重新连接服务端或者客户端;

步骤s10、辅助服务监听所有的操作,即时判断socket依赖的service是否运行,未运行则启动。

作为一种优选的实施方式,所述步骤s1包括以下步骤:

步骤s11、在主应用工程的manifests文件中增加meta-data,对应的value包含监控应用工程的包名和启动名特征值,包含1个集成socket服务端启动方法的service,该service为前台服务,以提升进程优先级别;

步骤s12、在监控应用工程manifests文件中增加meta-data,对应的value包含为主应用工程的包名和启动名特征值,包含1个集成socket客户端调用方法的service;

步骤s13、将service均设置为私有进程。

作为另一种优选的实施方式,所述步骤s13后还包括以下步骤:

主应用工程和监控应用工程启动activity均设置excludefromrecents字段值为true,用于取消在最近任务列表的显示。

作为一种优选的实施方式,所述步骤s7还包括以下步骤:

辅助服务监听到安装服务,检测是否已经安装监控应用工程生成的apk文件,未安装则自动安装。

本发明的有益效果是:本发明按照一定时间频率,主应用工程和监控应用工程互相发送心跳包发送心跳包,同时辅助服务监听service运行状态,辅助服务以前台服务存在,大大提高了进程生存几率,适用于安卓4.0以上主流系统的产品。

附图说明

图1为本发明实施例的流程框图。

具体实施方式

下面结合附图对本发明的实施例进行详细说明。

实施例

如图1所示,一种安卓平台下应用进程的保活方法,基于tcp长连接和辅助服务,实现进程的保活,具体包括以下步骤:

步骤s1、分别搭建作为socket服务端的主应用工程和作为socket客户端的后台监控应用工程;具体包括以下步骤:

步骤s11、在主应用工程的manifests文件中增加meta-data,对应的value包含监控应用工程的包名和启动名特征值,包含1个集成socket服务端启动方法的service,该service为前台服务,以提升进程优先级别;

步骤s12、在监控应用工程manifests文件中增加meta-data,对应的value包含为主应用工程的包名和启动名特征值,包含1个集成socket客户端调用方法的service;

步骤s13、将service均设置为私有进程;上述分别在主应用工程和监控应用工程的manifests文件中设置的meta-data目的是在需要唤醒对方时,需要知道对方的启动路径;

步骤s14、主应用工程和监控应用工程启动activity均设置excludefromrecents字段值为true,用于取消在最近任务列表的显示,可以防止用户主动杀死应用进程,进一步的监控应用工程设置theme风格为不显示桌面图标。

步骤s2、主应用工程配置对应的xml文件监听所有的包,用于开启辅助服务后检测服务端service是否运行,以唤醒service,并增加相应的辅助服务权限,实现辅助服务子类;

步骤s3、将后台监控应用工程生成的apk文件放置于主应用工程的assets文件夹下,用于主应用工程启动辅助服务后后台监控应用工程的安装;

步骤s4、主应用工程启动,注册辅助服务连接成功的广播,检测是否开启辅助服务,如未开启则执行步骤s5,已开启则执行步骤s6;

步骤s5、引导用户开启辅助服务,说明其必要性,用户如不开启不能进行下一步的操作,开启后执行步骤s6;

步骤s6、辅助服务开启后监听到辅助服务连接成功的回调,并检测服务端service是否运行,未运行则唤醒执行步骤s8;判读是否已安装后台监控应用工程,未安装则执行步骤s7,已安装则执行步骤s8;

步骤s7、安装主应用工程assets文件夹下后台监控应用工程生成的apk文件;辅助服务监听到安装服务,检测是否已经安装监控应用工程生成的apk文件,未安装则自动安装;这里再次校验是否安装目的是防止自动安装其他的apk;

步骤s8、主应用工程socket连接service服务端启动,判读后台监控应用工程是否在运行,未运行则启动台监控应用工程并连接到服务端;

步骤s9、主应用工程和监控应用工程互相发送心跳包,判读是否连接,未连接则启动,启动后重新连接服务端或者客户端;

步骤s10、辅助服务监听所有的操作,即时判断socket依赖的service是否运行,未运行则启动。

下面对本实施例作进一步的说明:

发送辅助服务连接成功的广播,注册地收到广播后启动socket服务端,服务端中监听是否有客户端心跳包,没有心跳说明监控应用工程服务未运行,则唤醒监控应用工程服务,监控应用工程服务作为客户端启动连接到主应用工程的服务端,以时间t的频率互相发送心跳,维持连接,检测是否收到心跳,有心跳则持续运行,无心跳或者发生异常则根据meta-data的value特征值唤醒,唤醒后在互相连接socket。

通过心跳和辅助服务实现了进程保活,简单实用,心跳频率越高,则后台唤醒对方的几率越大,辅助服务进程只要一直存活就能够检测服务service运行状态,在系统重启时辅助服务的机制也是能够重新启动,从而唤醒服务service,拉起客户端service,在安卓4.0以上主流系统均能够使用辅助服务。

通过socket连接主应用工程和监控应用工程,达到监测目的,socket调用均在service中实现,监控应用工程的apk文件置于主应用工程的assets中便于安装,告知用户这就是应用的一部分而非病毒之类,而且监控应用工程设置theme风格为不显示桌面图标,无界面可以防止用户误操作点击。

在监测时,主要是通过互相发送心跳的方式,检测心跳的存在来唤醒对方服务,另外也利用了socket读写异常机制来唤醒对方,心跳的频率可以是秒-毫秒-微秒-纳秒中的任何一个,可根据业务需求选择。

主应用工程和监控应用工程唤醒对方的路径在各自的manifests文件的meta-data中进行配置,就不再需要进程间的通信传递数据,减少了进程间通信的消耗。

通过辅助服务自动安装的监控应用工程,以减少用户的操作,辅助服务只会自动安装目标监控应用工程。

辅助服务监听了所有包的操作,以达到用户操作其他应用能够监测服务端service运行状态,达到即时唤醒的目的;应用均以不出现在近期使用列表的形式展示,减少用户主动杀死应用造成进程死亡的概率。

以上所述实施例仅表达了本发明的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1