和iOS相比,安卓是一個(gè)更加開(kāi)放的平臺(tái),帶來(lái)了更多自由的同時(shí),也容許了更多“法外之地”。App在安卓系統(tǒng)中的限制比iOS更小,這令安卓孕育出了很多流氓App。盡管Google一直嘗試對(duì)后臺(tái)增添更多限制、理清安卓的生態(tài),但流氓App們見(jiàn)招拆招,使出了各種喪心病狂的手段來(lái)駐留后臺(tái)。流氓App駐留后臺(tái)有哪些奇技淫巧?一起來(lái)看看吧。
很多App都會(huì)注冊(cè)大量的后臺(tái)服務(wù),這些后臺(tái)服務(wù)會(huì)消耗額外的資源和電量
安卓系統(tǒng)的后臺(tái)機(jī)制
我們先來(lái)談?wù)劙沧康暮笈_(tái)機(jī)制,這可以讓我們更清晰地得知為何流氓App為何容易駐留在后臺(tái)。安卓是一個(gè)基于Linux的操作系統(tǒng),因此其后臺(tái)機(jī)制也和Linux類似——一般情況下,返回桌面時(shí)程序并不會(huì)推出后臺(tái),而是在后臺(tái)持續(xù)運(yùn)行,當(dāng)系統(tǒng)需要更多資源的時(shí)候,相應(yīng)的程序才會(huì)被請(qǐng)出去。
安卓并不是隨便清理后臺(tái)的進(jìn)程的,在安卓系統(tǒng)中,App分為Foreground_App(前臺(tái)應(yīng)用)、Visiable_App(可見(jiàn)應(yīng)用)、Secondary_App(二級(jí)應(yīng)用)、Hidden_App(隱藏應(yīng)用)、Content_Provider(內(nèi)容提供器)、Empty_App(空應(yīng)用)等狀態(tài)。當(dāng)內(nèi)存不足的時(shí)候,系統(tǒng)會(huì)優(yōu)先終止Empty_App進(jìn)程和服務(wù),將內(nèi)存釋放出去;內(nèi)存再次吃緊,就開(kāi)始對(duì)Content_Provider動(dòng)手腳了,以此類推。因此,越重要的進(jìn)程會(huì)越得到保留,越無(wú)關(guān)重要的進(jìn)程會(huì)越被優(yōu)先清理出內(nèi)存,這方案乍看之下沒(méi)啥問(wèn)題。
安卓把App狀態(tài)分成不同類型,自動(dòng)管理后臺(tái)是否駐留
然而事情并不盡如人意,流氓App之所以流氓,就是不守規(guī)則。安卓系統(tǒng)中留有太多余地讓App在后臺(tái)自由發(fā)揮了,就算是Android 6. 0 引進(jìn)了Doze打盹機(jī)制、Android O倡導(dǎo)后臺(tái)純凈(Background-free),流氓App們?nèi)阅懿宦暡豁懙卦诤笈_(tái)龍盤虎踞。如果沒(méi)有使用特別的殺后臺(tái)工具或者對(duì)后臺(tái)有特殊限制的ROM,流氓App們甚至能讓手機(jī)化身續(xù)航兩小時(shí)的暖手寶。
流氓App駐留后臺(tái)技巧:亂注冊(cè)狀態(tài)
前面提到,安卓把App分為好幾個(gè)狀態(tài),不過(guò)流氓App可不會(huì)遵守這些規(guī)矩,讓后臺(tái)按照這些狀態(tài)來(lái)運(yùn)行。例如,流氓App就可以通過(guò)startForeground來(lái)把自己注冊(cè)成為前臺(tái)應(yīng)用,讓自己的后臺(tái)成為最高優(yōu)先級(jí),永遠(yuǎn)不會(huì)被系統(tǒng)干掉。
安卓7. 0 對(duì)很多后臺(tái)運(yùn)行的App都在通知欄有公示,后來(lái)這些App不得不改變后臺(tái)駐留的方法
不過(guò),這個(gè)方法已經(jīng)有了Google官方的應(yīng)對(duì),在安卓4. 3 以上的系統(tǒng)中,如果有App亂注冊(cè)這個(gè)狀態(tài),通知欄就會(huì)顯示“XX正在后臺(tái)運(yùn)行”。盡管流氓App通過(guò)一些手段一度繞了過(guò)去,但在安卓7. 0 中Google封堵了該漏洞。如果你升級(jí)到了安卓7.0,某App在通知欄持續(xù)顯示“XX正在后臺(tái)運(yùn)行”,不用懷疑,這就是個(gè)流氓App。
流氓App駐留后臺(tái)技巧:透明懸浮窗
這是個(gè)腦洞大開(kāi)的一招,我們知道和iOS不同,App可以在系統(tǒng)中顯示懸浮窗,為用戶提供各種實(shí)時(shí)信息。而開(kāi)了懸浮窗的App,會(huì)一直運(yùn)行,進(jìn)程不會(huì)被隨便清理掉。于是流氓App就在這方面動(dòng)歪腦筋了,某流氓App會(huì)在設(shè)置一個(gè) 1 像素大小的透明懸浮窗,用戶是看不到的,但這懸浮窗的確存在。App退到后臺(tái)后,由于有懸浮窗的存在,進(jìn)程也得以保留。
這個(gè)方法也已經(jīng)被Google所察覺(jué),在新版的安卓系統(tǒng)以及很多第三方ROM中,App已經(jīng)不能隨便申請(qǐng)到懸浮窗的權(quán)限。
聯(lián)系客服