根據(jù)第三方的調(diào)研數(shù)據(jù)顯示隆箩,有77%的Android手機(jī)用戶承認(rèn)自己曾遭遇過(guò)手機(jī)變慢的影響该贾,百度搜索“Android+卡慢”,也有超過(guò)460萬(wàn)條結(jié)果摘仅。在業(yè)內(nèi)靶庙,Android手機(jī)一直有著“越用越慢”的口碑,這個(gè)現(xiàn)象甚至超出了硬件范疇——很多中高端Android手機(jī)在硬件參數(shù)上都優(yōu)于同一代iPhone娃属,但是它們?nèi)匀粫?huì)在使用半年到一年的時(shí)間后進(jìn)入“欠流暢”的狀態(tài)——這無(wú)疑是一件令人困擾的事情六荒。
然而,若是要回答這個(gè)問(wèn)題矾端,我們需要追溯到上個(gè)世紀(jì)掏击,去尋找智能手機(jī)的起源。
西方歷史及奇幻文學(xué)作品十分熱衷于表達(dá)“血統(tǒng)”的設(shè)定秩铆,其傳統(tǒng)文化認(rèn)為血統(tǒng)可以決定天賦砚亭,并引出“命運(yùn)是否被注定”的哲學(xué)思考。比如大家比較熟知的《哈利波特》系列殴玛,解構(gòu)之后就不難發(fā)現(xiàn)捅膘,這實(shí)際上是一部講述格蘭芬多與斯萊特林兩支血統(tǒng)及其傳人的廝殺史(哈利波特是格蘭芬多的后代,繼承了其勇氣滚粟,伏地魔是斯萊特林的后代寻仗,擁有著其野心),而無(wú)處不在的預(yù)言(一個(gè)終將殺死另一個(gè))凡壤,也貫徹了西方慣有的宿命論情結(jié)署尤。
到了科技行業(yè),“血統(tǒng)”的定義被“基因”所取代亚侠,一個(gè)公司有著什么樣的基因曹体,決定了它的擅長(zhǎng)領(lǐng)域,這種評(píng)價(jià)也被廣泛接受硝烂,成為唯物時(shí)代獨(dú)樹一幟的唯心理念箕别,并經(jīng)受住了事實(shí)考驗(yàn)——當(dāng)我們?cè)噲D解釋微軟失落于互聯(lián)網(wǎng)、Google敗退于社交網(wǎng)絡(luò)、百度止步于電子商務(wù)的原因時(shí)究孕,都會(huì)由衷的感慨“原來(lái)劇本早在多年以前就已經(jīng)寫好了”啥酱。
同樣,為什么Android手機(jī)的“卡慢”問(wèn)題永遠(yuǎn)比iPhone要更加嚴(yán)重厨诸,它的答案也從一開始就注定了。
1965年禾酱,貝爾實(shí)驗(yàn)室微酬、通用電氣和麻省理工學(xué)院開始合作開發(fā)一套能夠兼顧易用性和強(qiáng)大性的操作系統(tǒng),經(jīng)過(guò)六年時(shí)間的通力協(xié)作颤陶,貝爾實(shí)驗(yàn)室的一名軟件工程師Ken Thompson在休假期間完成了一個(gè)名為Unix的系統(tǒng)編寫颗管,并最終成為貝爾實(shí)驗(yàn)室的母公司、美國(guó)電信巨頭AT&T的商業(yè)產(chǎn)品滓走,并啟動(dòng)了長(zhǎng)達(dá)數(shù)十年的版權(quán)運(yùn)作垦江。盡管后來(lái)有著許多變種,但是從嚴(yán)格意義上來(lái)講搅方,Unix不是一個(gè)開源的操作系統(tǒng)比吭。
1991年,一個(gè)芬蘭的大學(xué)生姨涡、同時(shí)也是計(jì)算機(jī)黑客的Linus Torvalds衩藤,他對(duì)Unix十分著迷,但是買不起運(yùn)行Unix需要的工作站涛漂,所以他就嘗試自己以同樣的編程方式寫了一個(gè)名為L(zhǎng)inux的操作系統(tǒng)赏表,并在自由軟件之父Richard Stallman的精神鼓舞之下,將Linux加入到了自由軟件基金(FSF)當(dāng)中匈仗,允許所有人使用瓢剿、拷貝、修改甚至銷售Linux系統(tǒng)悠轩,同時(shí)承擔(dān)開源義務(wù)间狂,禁止把Linux封閉化的企圖。
之所以要如此大費(fèi)周章的講述Unix和Linux兩個(gè)操作系統(tǒng)的故事哗蜈,是因?yàn)閕OS和Android前标,正是分別基于Unix和Linux而衍生出來(lái)的作品。也就是說(shuō)距潘,是Unix和Linux的兩種特性炼列,造成了iPhone與Android手機(jī)在使用體驗(yàn)上的巨大差異。
喬布斯曾經(jīng)邀請(qǐng)Linux的創(chuàng)始者Linus Torvalds到蘋果工作音比,放棄Linux的開源俭尖,協(xié)助開發(fā)Mac OS封閉式的Mach內(nèi)核,后者與喬布斯大吵一架之后明確表示拒絕。而從Mac OS開始稽犁,蘋果就將操作系統(tǒng)的私有化視為企業(yè)戰(zhàn)略焰望,用喬布斯的話來(lái)講,他是將iOS裝進(jìn)了iPhone這個(gè)盒子里已亥,然后賣給了用戶熊赖。所以,iPhone之所以不會(huì)出現(xiàn)“越用越卡”的情況虑椎,是因?yàn)樘O果公司對(duì)它的手機(jī)從硬件到軟件擁有最高的管理權(quán)限震鹉,在封閉式的環(huán)境中,來(lái)自第三方的應(yīng)用程序無(wú)法調(diào)用超過(guò)iPhone承受限度的指令捆姜,自然也不可能造成持續(xù)性的系統(tǒng)損傷传趾。
反觀Android手機(jī),由于開源的公開條件泥技,Google無(wú)法從代碼這一端口約束第三方的應(yīng)用程序浆兰,同時(shí),由于Linux核心設(shè)定應(yīng)用在調(diào)取系統(tǒng)功能時(shí)一定要取得ROOT權(quán)限珊豹,這也導(dǎo)致大量應(yīng)用因?yàn)閱我还δ艿膶?shí)現(xiàn)需求而獲得整個(gè)ROOT層面的支配簸呈,可以在Android手機(jī)的任意儲(chǔ)存位置進(jìn)行讀寫,這種高自由度無(wú)異于開啟了潘多拉魔盒平夜,讓Android手機(jī)無(wú)法對(duì)惡意App事先設(shè)防蝶棋。這也是開源軟件備受爭(zhēng)議、且在商用領(lǐng)域遭到抵觸的原因:它只關(guān)心是否授予了用戶自由——這個(gè)自由也包括逾越邊界的自由——而沒(méi)有從最壞的出發(fā)點(diǎn)去考慮如何規(guī)避被濫用的風(fēng)險(xiǎn)忽妒。盡管Google作為巨頭玩裙,一直在嘗試對(duì)產(chǎn)業(yè)鏈進(jìn)行統(tǒng)一管理,但是當(dāng)這條產(chǎn)業(yè)鏈日益龐大段直、連Google也只能扮演其中之一的角色時(shí)吃溅,Android的失控也就在情理之中了。比如鸯檬,Android的最新版本通常需要花費(fèi)超過(guò)一年半的時(shí)間决侈,才能使激活它的Android手機(jī)占比超過(guò)50%,但是iOS 7只用了兩個(gè)月喧务,就讓半數(shù)以上的iPhone都更新完畢赖歌。另外,一款應(yīng)用程序如果被蘋果從App Store中懲罰出去功茴,它就再也無(wú)法被安裝到任何一款合法的iPhone里面庐冯,但是如果一款應(yīng)用程序被Google驅(qū)逐出Google Play,但是它還是可以登錄各種第三方應(yīng)用市場(chǎng)坎穿,提供正常的下載和安裝展父。
所以返劲,Android的這種天生短板,又催生出了一個(gè)“手機(jī)調(diào)衅苘裕”的市場(chǎng)篮绿,并帶動(dòng)了新的產(chǎn)業(yè)鏈。
“手機(jī)調(diào)新榔”的第一級(jí)亲配,在于系統(tǒng)層。在Android 4.4以及之后的Android L的規(guī)劃中痰娱,它將應(yīng)用程序的運(yùn)行模式由Dalvik換成了ART弃榨,其原理簡(jiǎn)單來(lái)說(shuō)是“預(yù)編譯”效果,即當(dāng)一款應(yīng)用程序在第一次被安裝到Android時(shí)梨睁,它的字節(jié)碼就已經(jīng)被編譯成為了本地的機(jī)器碼,減少后續(xù)運(yùn)行應(yīng)用程序時(shí)的啟動(dòng)和執(zhí)行時(shí)間娜饵。
根據(jù)Google自己公布的結(jié)果坡贺,在不同的性能測(cè)試App中,ART的速度對(duì)比Dalvik的平均提升幅度達(dá)到了80%箱舞,在某些項(xiàng)目中遍坟,ART的提升幅度甚至超過(guò)了1.5倍,這個(gè)結(jié)果可謂非常喜人晴股。
這是Google希望從源頭解決Android卡慢問(wèn)題的努力愿伴,但是這只是對(duì)性能優(yōu)化有著作用,無(wú)法解決因?yàn)閼?yīng)用程序違規(guī)調(diào)用資源而產(chǎn)生的問(wèn)題电湘。同時(shí)隔节,由于在安裝應(yīng)用程序時(shí)進(jìn)行了“預(yù)編譯”,整個(gè)安裝時(shí)間將會(huì)變長(zhǎng)寂呛,安裝完畢后生成的文件也會(huì)變大怎诫,比如最新的Google+安裝包只有6.9M,但是它安裝后的APK大小達(dá)到了28.3M贷痪,這對(duì)Android手機(jī)儲(chǔ)存空間又存在過(guò)多占用的問(wèn)題幻妓。
“手機(jī)調(diào)校”的第二級(jí)劫拢,在于ROM層肉津。作為全球最大的Android市場(chǎng),中國(guó)的許多手機(jī)廠商都以開發(fā)專用ROM來(lái)為銷售產(chǎn)品添彩舱沧,大多數(shù)的ROM妹沙,也都會(huì)考慮對(duì)Android系統(tǒng)進(jìn)行優(yōu)化,比如MIUI V6就宣稱“引入多種Linux系統(tǒng)內(nèi)核內(nèi)存優(yōu)化技術(shù)狗唉,提高應(yīng)用運(yùn)行效率”初烘。
也就是說(shuō),與Google做的事情一樣,ROM廠商主要的優(yōu)化工作肾筐,也是對(duì)Linux動(dòng)刀哆料,打上各種補(bǔ)丁,使其底層語(yǔ)言能夠更好的適配到各種手機(jī)終端上吗铐。還是以MIUI V6為例东亦,在介紹新特性時(shí),其有這么一條:“ZRAM 調(diào)度優(yōu)化技術(shù)”唬渗,其實(shí)ZARM就是Linux內(nèi)核里的一個(gè)內(nèi)存模塊典阵,作用就是在內(nèi)存中劃出一個(gè)部分出來(lái)充當(dāng)虛擬盤,來(lái)承載Linux的交換分區(qū)镊逝,將一些任務(wù)壓縮容納進(jìn)去壮啊,使內(nèi)存的使用率提高,讓CPU來(lái)為內(nèi)存服務(wù)(因?yàn)槟壳暗闹悄苁謾C(jī)普遍CPU過(guò)剩撑蒜、而內(nèi)存才是瓶頸)歹啼。
不過(guò),ROM也是一把雙刃劍座菠,它對(duì)于Android底層系統(tǒng)的修改狸眼,以及它對(duì)于內(nèi)存空間的占用,又都有增加手機(jī)負(fù)載的風(fēng)險(xiǎn)浴滴。
“手機(jī)調(diào)型孛龋”的第三級(jí),在于應(yīng)用層升略。大量應(yīng)用程序在手機(jī)中發(fā)生的意外或故意占用事件微王,是造成Android手機(jī)越來(lái)越慢的最核心原因。過(guò)多的應(yīng)用程序熱衷于滯留在內(nèi)存空間里降宅、以及將大量碎片留在儲(chǔ)存空間里骂远,是帶來(lái)麻煩的罪魁禍?zhǔn)住_@也是為什么即時(shí)清理類應(yīng)用得以逐漸成為Android手機(jī)標(biāo)配腰根。
Android系統(tǒng)有七類進(jìn)程激才,分別是前臺(tái)進(jìn)程、可見(jiàn)進(jìn)程额嘿、主要服務(wù)瘸恼、次要服務(wù)、后臺(tái)進(jìn)程册养、內(nèi)容供應(yīng)節(jié)點(diǎn)东帅、空進(jìn)程,在沒(méi)有安裝清理類應(yīng)用的時(shí)候球拦,一部Android手機(jī)只能依賴系統(tǒng)默認(rèn)的分配機(jī)制來(lái)自動(dòng)調(diào)節(jié)內(nèi)存使用靠闭,只要應(yīng)用程序提出請(qǐng)求帐我,大部分進(jìn)程只要打開后都會(huì)被保留在內(nèi)存當(dāng)中,這原本是為了讓用戶在再度激活這些進(jìn)程時(shí)不需要重新載入愧膀、節(jié)省時(shí)間的初衷考慮权逗,但是Android沒(méi)有料到激烈的市場(chǎng)競(jìng)爭(zhēng)會(huì)驅(qū)使應(yīng)用程序產(chǎn)生“劣幣驅(qū)良幣”的趨勢(shì)亩码,很多開發(fā)者出于商業(yè)目的十艾,在不需要留存在內(nèi)存的情況下也想方設(shè)法的讓應(yīng)用程序保持潛在運(yùn)行狀態(tài)派近,一個(gè)兩個(gè)還好說(shuō),但是一旦數(shù)量更多蟀悦,Anrdoid手機(jī)就會(huì)頻頻卡頓和發(fā)熱媚朦。
以目前全球用戶規(guī)模最大的Android手機(jī)清理類應(yīng)用“獵豹清理大師”為例,它清理的進(jìn)程類型日戈,主要放在后臺(tái)進(jìn)程询张、次要服務(wù)、內(nèi)容供應(yīng)節(jié)點(diǎn)和空進(jìn)程:
后臺(tái)進(jìn)程(Hidden)——這個(gè)是最優(yōu)先被掃描和識(shí)別出來(lái)的進(jìn)程浙炼,因?yàn)榇蟛糠諥ndroid用戶在切換應(yīng)用程序時(shí)都不會(huì)使用返回鍵退出瑞侮,而是直接按下Home鍵,前者會(huì)讓應(yīng)用進(jìn)入空進(jìn)程(占用資源相對(duì)較泄呐 ),而后者則會(huì)保留為后臺(tái)進(jìn)程(占用資源相對(duì)更大)越妈,尤其是當(dāng)游戲類App在后臺(tái)運(yùn)行時(shí)季俩,它會(huì)和其他App爭(zhēng)搶資源,而不會(huì)在乎那款A(yù)pp是不是用戶正在使用梅掠。根據(jù)獵豹清理大師的統(tǒng)計(jì)酌住,約有20%的常用App即使不運(yùn)行時(shí)也在后臺(tái)啟動(dòng)聯(lián)網(wǎng),主要是提交產(chǎn)品及用戶使用信息阎抒、獲取廣告信息酪我、查詢是否升級(jí)等。
次要服務(wù)(Secondary Server)——比如某些企業(yè)套件且叁、郵箱聯(lián)系人都哭、觸控接口等,這些進(jìn)程很多都是系統(tǒng)自帶的逞带,有些用戶會(huì)使用欺矫,但是有些用戶也可能不會(huì)使用或已經(jīng)有了替代應(yīng)用,所以獵豹清理大師的清理邏輯是基于用戶行為和授權(quán)來(lái)建立(分為建議清理和深度清理兩類)展氓;
內(nèi)容供應(yīng)節(jié)點(diǎn)(Content Provider)——這部分進(jìn)程沒(méi)有程序?qū)嶓w穆趴,僅僅提供內(nèi)容給其他應(yīng)用使用,比如日歷供應(yīng)節(jié)點(diǎn)遇汞、郵件供應(yīng)節(jié)點(diǎn)等未妹,除了占用內(nèi)存資源之外簿废,它還會(huì)占用網(wǎng)絡(luò),所以也會(huì)給Android手機(jī)造成不必要的負(fù)擔(dān)络它;
空進(jìn)程(Empty)——如果是通過(guò)返回鍵退出應(yīng)用族檬,大部分的應(yīng)用也會(huì)在Android手機(jī)的內(nèi)存里遺留一個(gè)空的進(jìn)程,這個(gè)進(jìn)程沒(méi)有數(shù)據(jù)運(yùn)行酪耕,但是會(huì)記錄應(yīng)用的歷史信息导梆,幾乎沒(méi)有任何價(jià)值,同樣迂烁,這部分進(jìn)程內(nèi)容被干掉的優(yōu)先級(jí)也很高看尼。
除了對(duì)內(nèi)存的過(guò)度消耗之外,Android手機(jī)也容易在儲(chǔ)存中積累大量冗余數(shù)據(jù)盟步,包括無(wú)法卸載的預(yù)裝應(yīng)用藏斩、卸載之后的殘存文件以及使用應(yīng)用的過(guò)程中產(chǎn)生的緩存,由于Android本身沒(méi)有提供管理工具却盘,即使將手機(jī)連接電腦之后也是如同Windows樹狀結(jié)構(gòu)一樣的文件夾包狰域,用戶很難獨(dú)立判斷哪些文件夾可以刪除、哪些文件夾是系統(tǒng)必備的黄橘,最后也會(huì)導(dǎo)致手機(jī)尺寸空間愈來(lái)愈窄的情況兆览。
“手機(jī)調(diào)校”的問(wèn)題塞关,可能又回帶來(lái)用戶操作的負(fù)擔(dān)增加抬探,其心理壓力甚于行為壓力,玩著手機(jī)還不忘隔三差五的使用清理功能帆赢,這種與iPhone相比“別具特色”的操作習(xí)慣小压,也是Android手機(jī)永遠(yuǎn)像一個(gè)半成品或工程機(jī)的原因。