应用程序常驻操作系统后台的方法及装置的制造方法

文档序号:9579073阅读:650来源:国知局
应用程序常驻操作系统后台的方法及装置的制造方法
【技术领域】
[0001]本发明涉及应用程序通信技术,具体涉及一种应用程序常驻操作系统后台的方法及装置。
【背景技术】
[0002]随着互联网的普及,用户对网络通信服务的依耐性越来越强,对网络通信服务系统的稳定性、响应能力以及不间断(zero-downtime)的服务特性也有了越来越高的要求。通信设备作为承载网络通信服务的载体,通过安装操作系统,并基于安装的操作系统安装应用程序(App,Applicat1n),从而为用户提供便捷的互联网服务。
[0003]以安卓(Android)操作系统为例,Android操作系统是一种应用于移动通信设备的操作系统,由google提供源码给各大厂商定制,应用程序是安装在Android上的可执行程序。在目前Android操作系统环境下,一些第三方App由于任务运行的需要,需要常驻在操作系统后台,例如,对于即时通讯类应用程序,需要实时从服务器更新最新消息,以保证正常服务。再例如,对于电子市场类应用程序,需要在后台监控通信设备中其他应用程序的安装、卸载情况,以上传通信设备中应用程序的安装、卸载数据,从而对用户的喜好行为特征进行分析。再例如,对于定位服务(LBS, Locat1n Based Services)类应用程序,需要监控通信设备的地理位置信息,以实现运营商广告的精确投放。因此,如何实现第三方App常驻操作系统后台成为迫切需要解决的技术问题。
[0004]现有技术中,由于Android操作系统允许第三方开发者开发的系统级应用程序驻留操作系统后台(简称后台),因而,通过获取通信设备上操作系统的根(Root)权限,修改操作系统中/system/build, prop文件的配置信息,可以实现第三方App在操作系统后台常驻,即利用操作系统配置文件的漏洞,从而实现后台常驻,具体流程如下:
[0005]首先,获取操作系统Root权限;接着,修改操作系统下的/system/build, prop文件的配置信息,在该build, prop文件的配置信息中加入sys.keep_App_l = xxx.xxx.xxx,其中,xxx.xxx.xxx是第三方App包名;然后,重启动通信设备后生效,并通过分叉函数(fork)构建针对该第三方App的父进程以及与父进程直接相关联的子进程。这样,由于在操作系统下的/system/build, prop文件的配置信息加入了第三方App相关信息,使得操作系统可以对该第三方App构建的父进程以及子进程进行管理和控制,在第三方App退出操作系统后,第三方App对应的父进程和子进程仍可驻留于后台,从而实现第三方App常驻操作系统后台。
[0006]但上述应用程序常驻操作系统后台的方法,首先,需要通信设备具有Root功能,但据不完全统计,目前Root的比率大致为20%,应用受到限制,适用性不广;其次,Android操作系统设置有任务管理器,用于记录应用程序对应的父进程以及与父进程直接相关联的子进程占用的内存资源等信息,由于基于Android操作系统中的进程是托管给操作系统的,因而,在操作系统后台运行的应用程序较多、占用大量内存资源导致操作系统内存资源不足,需要进行系统清理的情况下,由于通过获取操作系统Root权限构建的第三方App对应的父进程以及子进程由操作系统进行管理和控制,通过查询任务管理器,依据预先设置的规则,例如,按照内存资源占用量或应用程序优先级关闭(kill) 一些应用程序对应的父进程以及与父进程直接相关联的子进程,从而终止该运用程序的运行,并能回收该运用程序占用的内存资源以保证操作系统的正常运行,导致驻留于后台的第三方App对应的父进程以及关联的子进程可能被操作系统清除掉以释放内存资源;或者,通信设备中安装的杀毒软件进行查杀毒的过程中,第三方App对应的父进程以及与父进程直接相关联的子进程也可能会被清除掉。在第三方App被清除掉的情况下,只有通过重新启动通信设备,并运行该第三方App,才能重新将第三方App置于后台运行方式。
[0007]由上述可见,现有应用程序常驻操作系统后台的方法,由于驻留于后台的应用程序在操作系统内存资源不足时或在查杀毒的过程中被清除掉,不能实现第三方App常驻(例如24小时)操作系统后台,使得应用程序常驻后台的可靠性较低,从而给用户的正常通信业务带来不便,并影响用户通信业务的正常进行,降低了用户的通信业务体验。而通过通信设备的重启动加载应用程序以重新启动被关掉的进程驻留后台,不仅操作流程较为繁琐,实现应用程序驻留后台所需时间较长,更会导致整个通信设备通信的中断,对用户的通信业务体验影响更大。

【发明内容】

[0008]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的应用程序常驻操作系统后台的方法及装置。
[0009]依据本发明的一个方面,提供了应用程序常驻操作系统后台的方法,该方法包括:
[0010]接收目标应用程序启动请求,为该目标应用程序启动请求对应的目标应用程序创建主进程;
[0011]所述主进程调用函数创建宿主保活进程;
[0012]宿主保活进程调用函数创建保活进程,并在保活进程创建后,将所述保活进程托管给操作系统;
[0013]构建主进程与保活进程连接,触发所述主进程与保活进程基于构建的连接进行相互监听;
[0014]在监听到主进程或保活进程被关闭后,启动被关闭的进程。
[0015]优选地,所述操作系统包括但不限于安卓操作系统、Linux操作系统、塞班操作系统。
[0016]优选地,所述目标应用程序存储在预先设置的启动列表中,在通信设备每次启动后,自动触发向操作系统发起目标应用程序启动请求,操作系统根据接收的目标应用程序启动请求,获取预先设置的启动列表,自动加载启动列表中的应用程序,并为启动列表中的各应用程序分配相应的主进程。
[0017]优选地,所述宿主保活进程将自身置于关闭状态,以使所述保活进程托管给操作系统。
[0018]优选地,所述将自身置于关闭状态包括:
[0019]主进程在创建宿主保活进程时,为创建的所述宿主保活进程设置生命周期,在设置的生命周期结束后,所述宿主保活进程自然关闭。
[0020]优选地,所述将自身置于关闭状态包括:
[0021]宿主保活进程在接收到保活进程创建成功信息后,将自身的生命周期置零。
[0022]优选地,所述构建主进程与保活进程连接包括:
[0023]主进程创建服务端套接字,保活进程创建客户端套接字;
[0024]绑定服务端套接字地址,并通过服务端套接字监听客户端套接字;
[0025]等待客户端套接字连接;
[0026]客户端套接字与服务端套接字建立套接字连接。
[0027]优选地,所述客户端套接字与服务端套接字建立套接字连接包括:
[0028]主进程通过服务端套接字创建保活进程宿主对象,并为所述保活进程宿主对象分配对应的保活进程标识;
[0029]主进程使用创建的保活进程宿主对象启动保活进程,并向所述保活进程发送复活指令,所述复活指令携带所述保活进程标识、主进程通信接口句柄;
[0030]保活进程启动并接收来自主进程的复活指令;
[0031]所述保活进程通过客户端套接字创建对应的保活进程对象,并初始化所述保活进程对象;
[0032]所述保活进程对象向所述主进程发送启动应答消息,所述启动应答消息携带所述保活进程对象对应的保活进程通信接口句柄、保活进程标识;
[0033]主进程收到保活进程的启动应答消息后,根据所述启动应答消息中的保活进程标识确定对应的保活进程宿主对象,并为所述保活进程宿主对象设置对应的保活进程通信接口句柄。
[0034]优选地,所述在建立套接字连接后,所述方法进一步包括:
[0035]所述主进程通过主进程通信接口句柄接收来自保活进程的数据,并通过保活进程宿主对象的保活进程通信接口句柄向对应的保活进程发送数据;
[0036]所述保活进程通过保活进程通信接口句柄接收来自主进程的数据,并通过主进程通信接口句柄向主进程发送数据。
[0037]优选地,所述监听到主进程或保活进程被关闭包括:
[0038]第一进程被关闭,处于关闭状态;
[0039]第一进程端对应的监听组件获取该第一进程处于关闭状态,将第一进程的状态参数标识设置为O ;
[0040]通过套接字连接的第二进程读取第一进程的状态参数标识;
[0041]第二进程确定第一进程的状态参数标识为0,确定对方进程被关闭。
[0042]优选地,所述监听到主进程或保活进程被关闭包括:
[0043]主进程和保活进程使用套接字连接互相监听,确定虚拟套接字连接断开,确定主进程或保活进程被关闭。
[0044]优选地,所述在监听到主进程或保活进程被关闭后,启动被关闭的进程包括:
[0045]主进程监听到保活进程被关闭,调用复活指令启动保活进程。
[0046]优选地,所述在监听到主进程或保活进程被关闭后,启动被关闭的进程包括:
[0047]保活进程监听到主进程被关闭,调用复活指令启动主进程并触发启动的主进程执行所述调用函数创建宿主保活进程的流程,并在主进程启动成功后将自身置于关闭状态。
[0048]优选地,所述保活进程在非安卓生命周期内启动主进程,并使用am指令在Iinux-C进程启动主进程。
[0049]优选地,所述函数为分叉函数。
[0050]优选地,所述主进程与所述宿主保活进程为父子进程关系,所述宿主保活进程与所述保活进程为父子进程关系。
[0051]优选地,通过未被关闭的所述保活进程或所述主进程启动所述被关闭的进程。
[0052]根据本发明的另一个方面提供了一种应用程序常驻操作系统后台的装置,该装置包括:主进程创建模块、宿主保活进程创建模块、保活进程创建模块、连接模块以及监听处理模块,其中,
[0053]主进程创建模块,用于接收目标应用程序启动请求,为该目标应用程序启动请求对应的目标应用程序创建主进程;
[0054]宿主保活进程创建模块,用于触发主进程调用函数创建宿主保活
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1