為什麼Android手機總是越用越慢?

sohu發表於2014-08-27

  根據第三方的調研資料顯示,有77%的Android手機使用者承認自己曾遭遇過手機變慢的影響,百度搜尋“Android+卡慢”,也有超過460萬條結果。在業內,Android手機一直有著“越用越慢”的口碑,這個現象甚至超出了硬體範疇——很多中高階Android手機在硬體引數上都優於同一代iPhone,但是它們仍然會在使用半年到一年的時間後進入“欠流暢”的狀態——這無疑是一件令人困擾的事情。

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

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

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

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

  1965年,貝爾實驗室、通用電氣和麻省理工學院開始合作開發一套能夠兼顧易用性和強大性的作業系統,經過六年時間的通力協作,貝爾實驗室的一名軟體工程師Ken Thompson在休假期間完成了一個名為Unix的系統編寫,並最終成為貝爾實驗室的母公司、美國電信巨頭AT&T的商業產品,並啟動了長達數十年的版權運作。儘管後來有著許多變種,但是從嚴格意義上來講,Unix不是一個開源的作業系統。

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

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

  賈伯斯曾經邀請Linux的創始者Linus Torvalds到蘋果工作,放棄Linux的開源,協助開發Mac OS封閉式的Mach核心,後者與賈伯斯大吵一架之後明確表示拒絕。而從Mac OS開始,蘋果就將作業系統的私有化視為企業戰略,用賈伯斯的話來講,他是將iOS裝進了iPhone這個盒子裡,然後賣給了使用者。所以,iPhone之所以不會出現“越用越卡”的情況,是因為蘋果公司對它的手機從硬體到軟體擁有最高的管理許可權,在封閉式的環境中,來自第三方的應用程式無法呼叫超過iPhone承受限度的指令,自然也不可能造成持續性的系統損傷。

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

  所以,Android的這種天生短板,又催生出了一個“手機調校”的市場,並帶動了新的產業鏈。

  “手機調校”的第一級,在於系統層。在Android 4.4以及之後的Android L的規劃中,它將應用程式的執行模式由Dalvik換成了ART,其原理簡單來說是“預編譯”效果,即當一款應用程式在第一次被安裝到Android時,它的位元組碼就已經被編譯成為了本地的機器碼,減少後續執行應用程式時的啟動和執行時間。

  根據Google自己公佈的結果,在不同的效能測試App中,ART的速度對比Dalvik的平均提升幅度達到了80%,在某些專案中,ART的提升幅度甚至超過了1.5倍,這個結果可謂非常喜人。

  這是Google希望從源頭解決Android卡慢問題的努力,但是這只是對效能優化有著作用,無法解決因為應用程式違規呼叫資源而產生的問題。同時,由於在安裝應用程式時進行了“預編譯”,整個安裝時間將會變長,安裝完畢後生成的檔案也會變大,比如最新的Google+安裝包只有6.9M,但是它安裝後的APK大小達到了28.3M,這對Android手機儲存空間又存在過多佔用的問題。

  “手機調校”的第二級,在於ROM層。作為全球最大的Android市場,中國的許多手機廠商都以開發專用ROM來為銷售產品添彩,大多數的ROM,也都會考慮對Android系統進行優化,比如MIUI V6就宣稱“引入多種Linux系統核心記憶體優化技術,提高應用執行效率”。

  也就是說,與Google做的事情一樣,ROM廠商主要的優化工作,也是對Linux動刀,打上各種補丁,使其底層語言能夠更好的適配到各種手機終端上。還是以MIUI V6為例,在介紹新特性時,其有這麼一條:“ZRAM 排程優化技術”,其實ZARM就是Linux核心裡的一個記憶體模組,作用就是在記憶體中劃出一個部分出來充當虛擬盤,來承載Linux的交換分割槽,將一些任務壓縮容納進去,使記憶體的使用率提高,讓CPU來為記憶體服務(因為目前的智慧手機普遍CPU過剩、而記憶體才是瓶頸)。

  不過,ROM也是一把雙刃劍,它對於Android底層系統的修改,以及它對於記憶體空間的佔用,又都有增加手機負載的風險。

  “手機調校”的第三級,在於應用層。大量應用程式在手機中發生的意外或故意佔用事件,是造成Android手機越來越慢的最核心原因。過多的應用程式熱衷於滯留在記憶體空間裡、以及將大量碎片留在儲存空間裡,是帶來麻煩的罪魁禍首。這也是為什麼即時清理類應用得以逐漸成為Android手機標配。

  Android系統有七類程式,分別是前臺程式、可見程式、主要服務、次要服務、後臺程式、內容供應節點、空程式,在沒有安裝清理類應用的時候,一部Android手機只能依賴系統預設的分配機制來自動調節記憶體使用,只要應用程式提出請求,大部分程式只要開啟後都會被保留在記憶體當中,這原本是為了讓使用者在再度啟用這些程式時不需要重新載入、節省時間的初衷考慮,但是Android沒有料到激烈的市場競爭會驅使應用程式產生“劣幣驅良幣”的趨勢,很多開發者出於商業目的,在不需要留存在記憶體的情況下也想方設法的讓應用程式保持潛在執行狀態,一個兩個還好說,但是一旦數量更多,Anrdoid手機就會頻頻卡頓和發熱。

  以目前全球使用者規模最大的Android手機清理類應用“獵豹清理大師”為例,它清理的程式型別,主要放在後臺程式、次要服務、內容供應節點和空程式:

  後臺程式(Hidden)——這個是最優先被掃描和識別出來的程式,因為大部分Android使用者在切換應用程式時都不會使用返回鍵退出,而是直接按下Home鍵,前者會讓應用進入空程式(佔用資源相對較小),而後者則會保留為後臺程式(佔用資源相對更大),尤其是當遊戲類App在後臺執行時,它會和其他App爭搶資源,而不會在乎那款App是不是使用者正在使用。根據獵豹清理大師的統計,約有20%的常用App即使不執行時也在後臺啟動聯網,主要是提交產品及使用者使用資訊、獲取廣告資訊、查詢是否升級等。

  次要服務(Secondary Server)——比如某些企業套件、郵箱聯絡人、觸控介面等,這些程式很多都是系統自帶的,有些使用者會使用,但是有些使用者也可能不會使用或已經有了替代應用,所以獵豹清理大師的清理邏輯是基於使用者行為和授權來建立(分為建議清理和深度清理兩類);

  內容供應節點(Content Provider)——這部分程式沒有程式實體,僅僅提供內容給其他應用使用,比如日曆供應節點、郵件供應節點等,除了佔用記憶體資源之外,它還會佔用網路,所以也會給Android手機造成不必要的負擔;

  空程式(Empty)——如果是通過返回鍵退出應用,大部分的應用也會在Android手機的記憶體裡遺留一個空的程式,這個程式沒有資料執行,但是會記錄應用的歷史資訊,幾乎沒有任何價值,同樣,這部分程式內容被幹掉的優先順序也很高。

  除了對記憶體的過度消耗之外,Android手機也容易在儲存中積累大量冗餘資料,包括無法解除安裝的預裝應用、解除安裝之後的殘存檔案以及使用應用的過程中產生的快取,由於Android本身沒有提供管理工具,即使將手機連線電腦之後也是如同Windows樹狀結構一樣的資料夾包,使用者很難獨立判斷哪些資料夾可以刪除、哪些資料夾是系統必備的,最後也會導致手機尺寸空間愈來愈窄的情況。

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

相關文章