对android应用程序在特定条件下自启动的管控系统及方法
【技术领域】
[0001]本发明涉及一种基于android系统的智能终端的应用程序运行管控系统及方法,尤其涉及一种对android应用程序在特定条件下自启动的管控系统及方法。
【背景技术】
[0002]随着以智能终端为代表的便携式智能终端的大量普及,越来越多的功能新颖,创意十足的应用不断地给用户带来学习和生活上的乐趣与便利,而人们在日常生活中也越来越离不开这些应用。但是用户在享受着智能终端带来的便利的同时,也伴随着一个极大的困扰,那就是智能终端的耗电速度之快有时让人无法接受,就这点不禁让人又怀念起那一周一充的功能机。为了解决智能终端耗电快的问题,无论是智能终端厂商在硬件方面还是各种应用在软件方面都下了不少功夫。
[0003]而android智能终端作为现今智能终端市场占有率最高的智能终端也逃脱不了这个问题,且android系统由于其系统的特殊性,很多android系统中的应用在用户优化后又能默默地在后台自启动,导致手机不停在耗电,而这却符合第三方应用的利益,因为它们总是希望用户时时刻刻在使用自己的应用。
[0004]Android系统中有一个广播接收器组件BroadCastReceiver,该组件是一个没有用户界面的,专注于接收广播通知信息,并做出对应处理的组件。很多广播是源自于系统——比如,通知时区改变、电池电量低、拍摄了一张照片或者用户改变了语言选项。应用程序也可以进行广播——比如说,通知其它应用程序一些数据下载完成并处于可用状态。应用程序可以拥有任意数量的广播接收器以对所有它感兴趣的通知信息予以响应。所有的接收器均继承自BroadcastReceiver基类。
[0005]应用程序中广播接收器的注册有两种方式:
[0006]1.动态注册
[0007]动态注册,即通过函数来注册和解除广播接收器,这种注册方法通常用于更新UI的状态,一般来说,都是在一个Activity启动的时候使用此方法注册BroadcastReceiver,一旦接收到广播的事件,就可以在onReceive方法当中更新当前的这个Activity当中的控件。但是需要注意的是如果这个Activity不可见了,就应该调用unregisterReceiver方法来解除注册,所以就不能收到消息了。
[0008]2.静态注册
[0009]静态注册,即在AndroidManifest.xml文件中注册广播接收器。这种注册方法可以保证在应用程序安装之后,B1adcastReceiver始终处于活动状态,通常用于监听系统状态的改变,比如说手机的电量,wifi网卡的状态(当然,监视这些东西也是取决于软件的需求)。对于这样的BroadcastReceiver,通常是在产生某个特定的系统事件之后,进行相应的操作,比如说wifi网卡打开时,给用户一个提。
[0010]如何控制android系统下应用程序的自启行为,防止应用在用户优化后又默默自启,相信很多第三方安全类应用也是做过此类功能,如360安全卫士等,大多主要实现方法是:将应用自启分为后台自启和开机自启,自启管理功能对后台自启行为和开机自启行为进行管控。后台自启行为管控其实是对静态注册的用于监听网络变化的广播接收器进行设置可用与不可用,而开机自启行为管控是对静态注册的用于监听系统开机的广播接收器进行设置可用与不可用。
[0011 ] 现有自启管控实现方案大多对后台自启行为和开机自启行为进行管控,实际上只是简单对用于监听网络变化和系统开机的广播接收器进行控制,设置其为可用与不可用。此方案其实不能完全管控所有应用的自启行为,因为现今应用自启不仅只是通过这两种途径进行自启。例如:有的应用在启动后除了会创建与此应用相关联的进程外,还会启动另外一个或多个独立进程,而通过android api强制停止应用时却只能清理与应用相关联的进程,独立进程却无法清理,并且独立进程会在之后的某个时间直接启动应用服务,此时应用又显示在正在运行应用列表中。
【发明内容】
[0012]本发明的目的是为解决目前自启管控实现方案大多对后台自启行为和开机自启行为进行管控,不能完全管控所有应用的自启行为,从而导致智能终端的耗电速度快,待机时间短的技术问题。
[0013]为了解决上述技术问题,本发明提供一种对android应用程序在特定条件下自启动的管控系统,所述andro i d应用程序安装在基于andro i d操作系统的智能终端上,所述管控系统包括:
[0014]获取应用程序信息的模块,至少用来获取应用程序的以下信息:程序包名称、用户ID、开机广播接收器和网络状态变化广播接收器;
[0015]强制停止应用程序的模块,其通过所述程序包名称强制停止所述应用程序;
[0016]关闭开机广播接收器和网络变化广播接收器的模块,其将所述开机广播接收器和网络变化广播接收器设为不可用;
[0017]获取root权限的模块,通过其使所述智能终端获得root权限;
[0018]清理后台独立守护进程的模块,用来限制由所述后台独立守护进程所启动的应用程序在优化后自启。
[0019]进一步地,所述清理后台独立守护进程的模块包括:
[0020]获取用户名子模块,其通过所述应用程序的用户ID映射到用户名来获取用户名;
[0021]获取后台独立守护进程子模块,用于通过所述用户名获取该用户名下拥有的所有能根据类名直接启动所述应用程序的后台服务进程的后台独立守护进程;
[0022]清理后台独立守护进程子模块,用于清理所述获取后台独立守护进程子模块获得的后台独立守护进程。
[0023]进一步地,所述获取后台独立守护进程子模块通过执行ps指令获取所述用户名下的后台独立守护进程。
[0024]为了解决上述技术问题,本发明还提供一种对android应用程序在特定条件下自启动的管控方法,所述android应用程序安装在基于android操作系统的智能终端上,所述管控方法包括以下步骤:
[0025](I)至少获取应用程序的以下信息:程序包名称、用户ID、开机广播接收器和网络状态变化广播接收器;
[0026](2)通过所述程序包名称强制停止所述应用程序;
[0027](3)关闭所述开机广播接收器和网络变化广播接收器的模块,将所述开机广播接收器和网络变化广播接收器设为不可用;
[0028](4)使所述智能终端获得root权限;
[0029](5)清理后台独立守护进程,限制由所述后台独立守护进程所启动的应用程序在优化后自启。
[0030]进一步地,所述步骤(5)具体包括如下步骤:
[0031](5.1)通过所述应用程序的用户ID映射到用户名来获取用户名;
[0032](5.2)通过所述用户名获取该用户名下拥有的所有能根据类名直接启动所述应用程序的后台服务进程的后台独立守护进程;
[0033](5.3)清理获得的所述后台独立守护进程。
[0034]进一步地,所述步骤(5.2)通过执行ps指令获取所述用户名下的后台独立守护进程。
[0035]本发明站在用户角度,为限制特定条件下android应用程序后台默默自启动提供一种解决方案,不仅切断了静态注册广播接收器通过接收广播自启动的途径,而且对后台独立守护进程启