所不用其极!盘点流氓App驻留后台的奇技淫巧
和iOS相比,安卓是一个更加开放的平台,带来了更多自由的同时,也容许了更多“法外之地”。App在安卓系统中的限制比iOS更小,这令安卓孕育出了很多流氓App。尽管Google一直尝试对后台增添更多限制、理清安卓的生态,但流氓App们见招拆招,使出了各种丧心病狂的手段来驻留后台。流氓App驻留后台有哪些奇技淫巧?一起来看看吧。
很多App都会注册大量的后台服务,这些后台服务会消耗额外的资源和电量
安卓系统的后台机制
我们先来谈谈安卓的后台机制,这可以让我们更清晰地得知为何流氓App为何容易驻留在后台。安卓是一个基于Linux的操作系统,因此其后台机制也和Linux类似——一般情况下,返回桌面时程序并不会推出后台,而是在后台持续运行,当系统需要更多资源的时候,相应的程序才会被请出去。
安卓并不是随便清理后台的进程的,在安卓系统中,App分为Foreground_App(前台应用)、Visiable_App(可见应用)、Secondary_App(二级应用)、Hidden_App(隐藏应用)、Content_Provider(内容提供器)、Empty_App(空应用)等状态。当内存不足的时候,系统会优先终止Empty_App进程和服务,将内存释放出去;内存再次吃紧,就开始对Content_Provider动手脚了,以此类推。因此,越重要的进程会越得到保留,越无关重要的进程会越被优先清理出内存,这方案乍看之下没啥问题。
安卓把App状态分成不同类型,自动管理后台是否驻留
然而事情并不尽如人意,流氓App之所以流氓,就是不守规则。安卓系统中留有太多余地让App在后台自由发挥了,就算是Android 6. 0 引进了Doze打盹机制、Android O倡导后台纯净(Background-free),流氓App们仍能不声不响地在后台龙盘虎踞。如果没有使用特别的杀后台工具或者对后台有特殊限制的ROM,流氓App们甚至能让手机化身续航两小时的暖手宝。
流氓App驻留后台技巧:乱注册状态
前面提到,安卓把App分为好几个状态,不过流氓App可不会遵守这些规矩,让后台按照这些状态来运行。例如,流氓App就可以通过startForeground来把自己注册成为前台应用,让自己的后台成为最高优先级,永远不会被系统干掉。
安卓7. 0 对很多后台运行的App都在通知栏有公示,后来这些App不得不改变后台驻留的方法
不过,这个方法已经有了Google官方的应对,在安卓4. 3 以上的系统中,如果有App乱注册这个状态,通知栏就会显示“XX正在后台运行”。尽管流氓App通过一些手段一度绕了过去,但在安卓7. 0 中Google封堵了该漏洞。如果你升级到了安卓7.0,某App在通知栏持续显示“XX正在后台运行”,不用怀疑,这就是个流氓App。
流氓App驻留后台技巧:透明悬浮窗
这是个脑洞大开的一招,我们知道和iOS不同,App可以在系统中显示悬浮窗,为用户提供各种实时信息。而开了悬浮窗的App,会一直运行,进程不会被随便清理掉。于是流氓App就在这方面动歪脑筋了,某流氓App会在设置一个 1 像素大小的透明悬浮窗,用户是看不到的,但这悬浮窗的确存在。App退到后台后,由于有悬浮窗的存在,进程也得以保留。
这个方法也已经被Google所察觉,在新版的安卓系统以及很多第三方ROM中,App已经不能随便申请到悬浮窗的权限。