细说Android应用的“续命大法”
如果读者是一名 Android 用户,请掏出你的手机,进入“应用程序管理”页面,让所有应用停止运行,然后去泡杯茶,回来再看看你的手机;如果读者是一名 iOS用户,请直接去泡茶,然后回来观察前面那位Android用户的手机。这时,你会惊奇地发现,刚刚“杀死”的应用很多都自己“复活”了,时不时还会推送几条消息。
于是问题来了,这些应用使了什么手段“续命”,让自己“死而复生”呢?下面作者介绍Android应用的“续命”三式。
“续命大法”第一式:监听系统事件
Android系统有一套广播机制,当系统下达指令时,它会通知与这件事情相关联的所有应用。例如,用户切换了网络,系统就拿出一个高音喇叭吼道:“各单位注意了,系统网络切换,现在是4G 网络环境了!”这时,一个正在做下载任务的应用收到了这个通知,它考虑了一下:为了节省用户的流量,就暂停下载吧。有了这套机制,良心应用就可以根据系统当前的状态调整任务进程,给用户带来更好的体验。但是,某些别有用心的应用就利用了这套机制钻空子,明明用户已经让它停止运行,它仍旧把自己唤醒,悄悄地躺在后台。
“续命大法”第二式:守护进程唤醒
大部分“复活”的应用都只学会了第一式,通过系统广播来唤醒自己。不过,有的ROM(Read-Only Memory,只读存储器)会对这些广播进行限制,于是就有了进阶版应对策略——守护进程唤醒方案。很多应用在启动后,还会创建一个守护进程,守护进程像一个小魔法师,在后台不断地检查应用进程的运行状态,一旦应用进程停止运行,它就默默地施法,把应用复活。
“续命大法”第三式:“全家桶系列”
守护进程也有一个局限,那就是需要应用程序通过其他方式启动过一次。为了解决这个问题,是时候拿出终极手段“全家桶系列”了。目前,江湖上只有少数几个“大佬”才有能力使出这一招。它的原理很简单,就是不同应用之间相互唤醒,当应用A被“杀死”后,“同门兄弟”B就会将它“复活”。还有的情况是,只要启动了A,它就会把它的“同门兄弟”B、C、D 都唤醒。这招之所以只有少数“大佬”拥有,是因为使用它的前提条件是用户手机里安装了同一个公司的多个应用,国内也只有少数几家公司拥有这个资源。我们一起来看一下打开手机淘宝APP后,它家“兄弟”的情况,如图2-1所示。
图2-1
这些应用无节制地自我“复活”,以始终与后台保持联络,随时激活自己并展示在用户面前,这对提高应用活跃度很有帮助。这造成的后果是大量不被使用的应用常驻后台,占用了设备的 CPU、内存等资源,给用户带来卡、慢、耗电、费流量等糟糕的体验。