【用技術(shù)說話】專業(yè)解讀Android手機為什么會變慢?

4 評論 16143 瀏覽 3 收藏 15 分鐘

摘要:在業(yè)內(nèi),Android手機一直有著“越用越慢”的口碑,甚至很多中高端Android手機在硬件參數(shù)上都優(yōu)于同一代iPhone,但是它們?nèi)匀粫谑褂冒肽甑揭荒甑臅r間后進入“欠流暢”的狀態(tài)。這是個技術(shù)問題,也是個“基因”問題。

根據(jù)第三方的調(diào)研數(shù)據(jù)顯示,有77%的Android手機用戶承認自己曾遭遇過手機變慢的影響,百度搜索“Android+卡慢”,也有超過460萬條結(jié)果。在業(yè)內(nèi),Android手機一直有著“越用越慢”的口碑,這個現(xiàn)象甚至超出了硬件范疇——很多中高端Android手機在硬件參數(shù)上都優(yōu)于同一代iPhone,但是它們?nèi)匀粫谑褂冒肽甑揭荒甑臅r間后進入“欠流暢”的狀態(tài)——這無疑是一件令人困擾的事情。

然而,若是要回答這個問題,我們需要追溯到上個世紀,去尋找智能手機的起源。

西方歷史及奇幻文學作品十分熱衷于表達“血統(tǒng)”的設定,其傳統(tǒng)文化認為血統(tǒng)可以決定天賦,并引出“命運是否被注定”的哲學思考。比如大家比較熟知的《哈利波特》系列,解構(gòu)之后就不難發(fā)現(xiàn),這實際上是一部講述格蘭芬多與斯萊特林兩支血統(tǒng)及其傳人的廝殺史(哈利波特是格蘭芬多的后代,繼承了其勇氣,伏地魔是斯萊特林的后代,擁有著其野心),而無處不在的預言(一個終將殺死另一個),也貫徹了西方慣有的宿命論情結(jié)。

到了科技行業(yè),“血統(tǒng)”的定義被“基因”所取代,一個公司有著什么樣的基因,決定了它的擅長領(lǐng)域,這種評價也被廣泛接受,成為唯物時代獨樹一幟的唯心理念,并經(jīng)受住了事實考驗——當我們試圖解釋微軟失落于互聯(lián)網(wǎng)、Google敗退于社交網(wǎng)絡、百度止步于電子商務的原因時,都會由衷的感慨“原來劇本早在多年以前就已經(jīng)寫好了”。

同樣,為什么Android手機的“卡慢”問題永遠比iPhone要更加嚴重,它的答案也從一開始就注定了。

1965年,貝爾實驗室、通用電氣和麻省理工學院開始合作開發(fā)一套能夠兼顧易用性和強大性的操作系統(tǒng),經(jīng)過六年時間的通力協(xié)作,貝爾實驗室的一名軟件工程師Ken Thompson在休假期間完成了一個名為Unix的系統(tǒng)編寫,并最終成為貝爾實驗室的母公司、美國電信巨頭AT&T的商業(yè)產(chǎn)品,并啟動了長達數(shù)十年的版權(quán)運作。盡管后來有著許多變種,但是從嚴格意義上來講,Unix不是一個開源的操作系統(tǒng)。

1991年,一個芬蘭的大學生、同時也是計算機黑客的Linus Torvalds,他對Unix十分著迷,但是買不起運行Unix需要的工作站,所以他就嘗試自己以同樣的編程方式寫了一個名為Linux的操作系統(tǒng),并在自由軟件之父Richard Stallman的精神鼓舞之下,將Linux加入到了自由軟件基金(FSF)當中,允許所有人使用、拷貝、修改甚至銷售Linux系統(tǒng),同時承擔開源義務,禁止把Linux封閉化的企圖。

之所以要如此大費周章的講述Unix和Linux兩個操作系統(tǒng)的故事,是因為iOS和Android,正是分別基于Unix和Linux而衍生出來的作品。也就是說,是Unix和Linux的兩種特性,造成了iPhone與Android手機在使用體驗上的巨大差異。

喬布斯曾經(jīng)邀請Linux的創(chuàng)始者Linus Torvalds到蘋果工作,放棄Linux的開源,協(xié)助開發(fā)Mac OS封閉式的Mach內(nèi)核,后者與喬布斯大吵一架之后明確表示拒絕。而從Mac OS開始,蘋果就將操作系統(tǒng)的私有化視為企業(yè)戰(zhàn)略,用喬布斯的話來講,他是將iOS裝進了iPhone這個盒子里,然后賣給了用戶。所以,iPhone之所以不會出現(xiàn)“越用越卡”的情況,是因為蘋果公司對它的手機從硬件到軟件擁有最高的管理權(quán)限,在封閉式的環(huán)境中,來自第三方的應用程序無法調(diào)用超過iPhone承受限度的指令,自然也不可能造成持續(xù)性的系統(tǒng)損傷。

反觀Android手機,由于開源的公開條件,Google無法從代碼這一端口約束第三方的應用程序,同時,由于Linux核心設定應用在調(diào)取系統(tǒng)功能時一定要取得ROOT權(quán)限,這也導致大量應用因為單一功能的實現(xiàn)需求而獲得整個ROOT層面的支配,可以在Android手機的任意儲存位置進行讀寫,這種高自由度無異于開啟了潘多拉魔盒,讓Android手機無法對惡意App事先設防。這也是開源軟件備受爭議、且在商用領(lǐng)域遭到抵觸的原因:它只關(guān)心是否授予了用戶自由——這個自由也包括逾越邊界的自由——而沒有從最壞的出發(fā)點去考慮如何規(guī)避被濫用的風險。盡管Google作為巨頭,一直在嘗試對產(chǎn)業(yè)鏈進行統(tǒng)一管理,但是當這條產(chǎn)業(yè)鏈日益龐大、連Google也只能扮演其中之一的角色時,Android的失控也就在情理之中了。比如,Android的最新版本通常需要花費超過一年半的時間,才能使激活它的Android手機占比超過50%,但是iOS 7只用了兩個月,就讓半數(shù)以上的iPhone都更新完畢。另外,一款應用程序如果被蘋果從App Store中懲罰出去,它就再也無法被安裝到任何一款合法的iPhone里面,但是如果一款應用程序被Google驅(qū)逐出Google Play,但是它還是可以登錄各種第三方應用市場,提供正常的下載和安裝。

所以,Android的這種天生短板,又催生出了一個“手機調(diào)?!钡氖袌?,并帶動了新的產(chǎn)業(yè)鏈。

“手機調(diào)?!钡牡谝患?,在于系統(tǒng)層。在Android 4.4以及之后的Android L的規(guī)劃中,它將應用程序的運行模式由Dalvik換成了ART,其原理簡單來說是“預編譯”效果,即當一款應用程序在第一次被安裝到Android時,它的字節(jié)碼就已經(jīng)被編譯成為了本地的機器碼,減少后續(xù)運行應用程序時的啟動和執(zhí)行時間。

根據(jù)Google自己公布的結(jié)果,在不同的性能測試App中,ART的速度對比Dalvik的平均提升幅度達到了80%,在某些項目中,ART的提升幅度甚至超過了1.5倍,這個結(jié)果可謂非常喜人。

這是Google希望從源頭解決Android卡慢問題的努力,但是這只是對性能優(yōu)化有著作用,無法解決因為應用程序違規(guī)調(diào)用資源而產(chǎn)生的問題。同時,由于在安裝應用程序時進行了“預編譯”,整個安裝時間將會變長,安裝完畢后生成的文件也會變大,比如最新的Google+安裝包只有6.9M,但是它安裝后的APK大小達到了28.3M,這對Android手機儲存空間又存在過多占用的問題。

“手機調(diào)?!钡牡诙?,在于ROM層。作為全球最大的Android市場,中國的許多手機廠商都以開發(fā)專用ROM來為銷售產(chǎn)品添彩,大多數(shù)的ROM,也都會考慮對Android系統(tǒng)進行優(yōu)化,比如MIUI V6就宣稱“引入多種Linux系統(tǒng)內(nèi)核內(nèi)存優(yōu)化技術(shù),提高應用運行效率”。

也就是說,與Google做的事情一樣,ROM廠商主要的優(yōu)化工作,也是對Linux動刀,打上各種補丁,使其底層語言能夠更好的適配到各種手機終端上。還是以MIUI V6為例,在介紹新特性時,其有這么一條:“ZRAM 調(diào)度優(yōu)化技術(shù)”,其實ZARM就是Linux內(nèi)核里的一個內(nèi)存模塊,作用就是在內(nèi)存中劃出一個部分出來充當虛擬盤,來承載Linux的交換分區(qū),將一些任務壓縮容納進去,使內(nèi)存的使用率提高,讓CPU來為內(nèi)存服務(因為目前的智能手機普遍CPU過剩、而內(nèi)存才是瓶頸)。

不過,ROM也是一把雙刃劍,它對于Android底層系統(tǒng)的修改,以及它對于內(nèi)存空間的占用,又都有增加手機負載的風險。

“手機調(diào)?!钡牡谌?,在于應用層。大量應用程序在手機中發(fā)生的意外或故意占用事件,是造成Android手機越來越慢的最核心原因。過多的應用程序熱衷于滯留在內(nèi)存空間里、以及將大量碎片留在儲存空間里,是帶來麻煩的罪魁禍首。這也是為什么即時清理類應用得以逐漸成為Android手機標配。

Android系統(tǒng)有七類進程,分別是前臺進程、可見進程、主要服務、次要服務、后臺進程、內(nèi)容供應節(jié)點、空進程,在沒有安裝清理類應用的時候,一部Android手機只能依賴系統(tǒng)默認的分配機制來自動調(diào)節(jié)內(nèi)存使用,只要應用程序提出請求,大部分進程只要打開后都會被保留在內(nèi)存當中,這原本是為了讓用戶在再度激活這些進程時不需要重新載入、節(jié)省時間的初衷考慮,但是Android沒有料到激烈的市場競爭會驅(qū)使應用程序產(chǎn)生“劣幣驅(qū)良幣”的趨勢,很多開發(fā)者出于商業(yè)目的,在不需要留存在內(nèi)存的情況下也想方設法的讓應用程序保持潛在運行狀態(tài),一個兩個還好說,但是一旦數(shù)量更多,Anrdoid手機就會頻頻卡頓和發(fā)熱。

以Android手機清理類應用“獵豹清理大師”為例,它清理的進程類型,主要放在后臺進程、次要服務、內(nèi)容供應節(jié)點和空進程:

后臺進程(Hidden)——這個是最優(yōu)先被掃描和識別出來的進程,因為大部分Android用戶在切換應用程序時都不會使用返回鍵退出,而是直接按下Home鍵,前者會讓應用進入空進程(占用資源相對較?。笳邉t會保留為后臺進程(占用資源相對更大),尤其是當游戲類App在后臺運行時,它會和其他App爭搶資源,而不會在乎那款App是不是用戶正在使用。根據(jù)獵豹清理大師的統(tǒng)計,約有20%的常用App即使不運行時也在后臺啟動聯(lián)網(wǎng),主要是提交產(chǎn)品及用戶使用信息、獲取廣告信息、查詢是否升級等。

次要服務(Secondary Server)——比如某些企業(yè)套件、郵箱聯(lián)系人、觸控接口等,這些進程很多都是系統(tǒng)自帶的,有些用戶會使用,但是有些用戶也可能不會使用或已經(jīng)有了替代應用,所以獵豹清理大師的清理邏輯是基于用戶行為和授權(quán)來建立(分為建議清理和深度清理兩類);

內(nèi)容供應節(jié)點(Content Provider)——這部分進程沒有程序?qū)嶓w,僅僅提供內(nèi)容給其他應用使用,比如日歷供應節(jié)點、郵件供應節(jié)點等,除了占用內(nèi)存資源之外,它還會占用網(wǎng)絡,所以也會給Android手機造成不必要的負擔;

空進程(Empty)——如果是通過返回鍵退出應用,大部分的應用也會在Android手機的內(nèi)存里遺留一個空的進程,這個進程沒有數(shù)據(jù)運行,但是會記錄應用的歷史信息,幾乎沒有任何價值,同樣,這部分進程內(nèi)容被干掉的優(yōu)先級也很高。

除了對內(nèi)存的過度消耗之外,Android手機也容易在儲存中積累大量冗余數(shù)據(jù),包括無法卸載的預裝應用、卸載之后的殘存文件以及使用應用的過程中產(chǎn)生的緩存,由于Android本身沒有提供管理工具,即使將手機連接電腦之后也是如同Windows樹狀結(jié)構(gòu)一樣的文件夾包,用戶很難獨立判斷哪些文件夾可以刪除、哪些文件夾是系統(tǒng)必備的,最后也會導致手機尺寸空間愈來愈窄的情況。

“手機調(diào)校”的問題,可能又回帶來用戶操作的負擔增加,其心理壓力甚于行為壓力,玩著手機還不忘隔三差五的使用清理功能,這種與iPhone相比“別具特色”的操作習慣,也是Android手機永遠像一個半成品或工程機的原因。

來源:鈦媒體

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 我就想知道咋個解決辦法才能更好的處理它慢的這個問題

    來自山東 回復
    1. 刷機

      來自福建 回復