安卓目前全球最大的移动端系统,其开放性为其带来了与ios不一样的受众群体,开放性带来了各种开发者‘乐此不疲’的开发也为这些开发者预留了很大一部分黑色操作空间,出现了很多的病毒式APP相信各位机油都有所体会,今天主要谈一下杀不尽的后台式app,这类在我们当中最为常见。尽管Google一直尝试对后台增添更多限制、清理安卓的生态圈,但癞子App见招拆招,始终没有太大的改变。安卓是一个基于Linux(Linux操作系统诞生于1991 年10 月5 日是一套免费使用和自由传播的OS),因此其后台机制也和Linux类似一般情况下,返回桌面时程序并不会推出后台,而是在后台持续运行,当系统需要更多资源的时候,相应的程序才会被请出去,安卓并不是随便清理后台的进程的,在安卓系统中,App分为Foreground_App(前台应用)、Visiable_App(可见应用)、Secondary_App(二级应用)、Hidden_App(隐藏应用)、Content_Provider(内容提供器)、Empty_App(空应用)等状态。当内存不足的时候,系统会优先终止Empty_App进程和服务,将内存释放出去,内存再次吃紧,就开始对Content_Provider动手脚了,以此类推。因此,越重要的进程会越得到保留,越无关重要的进程会越被优先清理出内存。开放性必然会带来的弊端系统后台有太多可以发挥的空间,安卓把app分为好几个状态,让后台按照这些状态来运行。
1.这些app通过startForeground(Android2.0(API Level 5)中引入)来把自己注册成为前台应用,让自己的后台成为最高优先级,永远不会被系统干掉。
2.互相唤醒,(多么熟悉的字眼)安卓系统拥有唤醒机制,app可以在某些具体事件,触发特定动作,(例如到了时间,app可以触发铃声,app可以触发数据同步动作。这些动作都需要唤醒app才能运行),于是这些App就利用“Alarm”、“Sync Adapter”等周期性任务唤醒代码,让自己不断在后台启动,所以依靠清除后台能杀掉进程其实是杀不掉的,因为这些app在后台注册多个进程,就算某个进程被干掉,也可以用其他进程来唤醒这些App都在后台注册了不止一个进程,为的就是不断唤醒;另一方面,流氓App们还可以抱团相互唤醒。(当你开启了A应用后,它的进程可能会唤醒B应用,B应用的进程接而又会唤醒C应用),这种“链式唤醒”在国内的App最为常见。因为我们国内google服务的缺失让这些app有机可乘,不过安卓8.0的开发要求App一旦进入后台,需要在短时间内停止所有的后台服务,也不可以随便启动新的后台服务。
任务栏常驻,经常可以发现有些app会在状态栏为你推送实时消息的服务,这也是一大漏洞,开了状态栏权限的app,会一直运行,进程不会被随便清理掉。而这些app会在设置一个1像素大小的透明状态栏,app退到后台后,由于有悬浮窗的存在,进程也得以保留。这些癞子式app大家可以取得开发者权限后观察到,我十分遗憾的观察到我们日常使用的app就有以上三条的毛病,正是因为这些各种各样的app存在,手机分分钟变成暖手宝。
好消息是国内已经有厂商(小米,其余厂商尚未有消息透露)联合开发者们建立统一的App推送机制,减少App后台驻留,未来相信安卓的生态圈会越来越好吧!
|
来自360手机 Q5 Plus(360社区3.3.4版)
|
|
|
评论
直达楼层