一直以來人們都有這樣的印象,認為搭載iOS系統的iPhone一定比搭載Android系統的安卓手機流暢。潛移默化中,不少果粉甚至是普通吃瓜群眾都形成了這樣的思維定式:安卓就是卡、慢的代名詞。然而,就是這樣一個群眾眼中的“卡、慢”的系統,不知不覺間已經走過了第十個年頭。這麼多年過去了這個觀點還成立嗎?
Android 8.0不久前已經發佈了,儘管Android對比iOS似乎有“先天缺陷”,但一直以來穀歌都在不遺餘力地提升安卓系統的流暢度。我們不妨來看看穀歌在這方面都做了哪些努力。
Android 4.1:黃油計畫
2012年6月,Google I/O 2012開發者大會上,穀歌發佈了Android 4.1,該版本擔負著“承上啟下”的作用,4.1系統繼承了4.0的基本特性,又加入了Project Butter的新特性。Project Butter中文稱為黃油計畫,Google希望新版的Android如黃油一般絲般潤滑,所以稱之為黃油。該系統使用了新的處理架構,讓Android設備中的雙核、四核處理器能夠得到優化,發揮出強勁的性能。
本文圖片來自The Verge
其次,在4.1版本中,特效動畫的幀速提高至60fps,優化最佳性能和較低的觸摸延遲,提供了一個流暢、直觀的使用者介面。
為了確保幀速一致,4.1版本的Android框架所有的繪圖和動畫都將統一VSYNC計時,應用渲染、觸摸事件、畫面構圖、顯示刷新等操作都會鎖定在16毫秒回應,所有的幀都沒有提前或者落後。此外,還新增三重影像緩衝技術,讓所有的渲染感覺更順暢。觸摸延時不僅會遵循VSYNC計時,還會在觸摸操作時做出預判是否要提前渲染,此外在CPU閒置時會分配更多的處理能力來應對觸摸事件,確保觸摸沒有延遲。
黃油專案(Project Butter)為我們帶來了Android系統的重大改進,穀歌終於開始直面Android系統流暢度這個古老並重要的問題了。
Android 4.4:對齊喚醒
其實,很多時候,安卓系統的卡頓並不是由系統本身造成的,而是由於安卓開放的特性例如對協力廠商APP限制較少,所以很多APP長期惡意在後臺運行,定期喚醒系統,隨著安裝的APP越來越多,各種APP會一窩蜂地喚醒系統,而每次喚醒都會讓CPU處於高負荷運轉狀態,導致手機待機時也非常耗電。
而4.4版本很明顯的針對這個問題而做出了優化,在該版本中加入了對齊喚醒功能,把原來需要分別在不同時間喚醒系統的多個APP集中在某個時間一次性喚醒。這樣,系統被喚醒的次數大幅減少,CPU也不用頻繁的工作,手機也就不會這麼卡頓和耗電了。
Android 5.0:ART虛擬機器
一直以來,Dalvik虛擬機器背負著Android應用卡頓的罪名,原因則是應用在運行的過程中,虛擬機器Dalvik通過一個叫JIT(Just-in-time)的解譯器動態的進行編譯並執行,這一過程也拖慢了運行效率。而在5.0版本中,原有的Dalvik虛擬機器被新的ART虛擬機器代替。
Android Runtime(縮寫為 ART),是一種在Android作業系統上的運行環境,由Google公司研發。ART能夠把應用程式的位元組碼轉換為機器碼,是Android所使用的一種新的虛擬機器。它與Dalvik的主要不同在於:Dalvik採用的是JIT技術,而ART採用Ahead-of-time(AOT)技術,也就是預編譯技術,安裝應用的時候,代碼中的位元組碼將被編譯成機器碼。而由於有了機器碼,下次打開的時候就不需要再編譯了,這就提高了運行效率,APP啟動速度明顯加快。ART同時也改善了性能、垃圾回收(Garbage Collection)、提高續航能力、應用程式除錯以及性能分析。
Android 6.0:Doze嗜睡模式
4.4的對齊喚醒已經對後臺APP做出了一定限制,但是顯然對於那些“毒瘤APP”顯然是不夠的,為了杜絕“毒瘤”APP不斷在後臺消耗資源和電量,6.0版本加入了Doze嗜睡模式,在Doze模式中,系統嘗試去通過減少應用的網路訪問和CPU敏感的服務來保護電池。它也阻止應用通過訪問網路,並且延緩應用的任務、同步和標準alarms。
同時系統定期退出Doze模式(maintenance window)去讓app完成他們被延緩的動作。在maintenance window期間,系統運行所有掛起的同步、任務和alarms,同時也能訪問網路。只要使用者通過移動、點亮螢幕或則插上充電器喚醒設備的時候,系統會退出Doze模式,所有的APP退回到正常活動狀態。
Android 7.0:優化系統代碼
如果說前幾代Android是在改善應用環境,提升應用體驗的話,那麼7.0版本就是優化Android的運行環境了,穀歌表示,7.0版本會是最具銷量的一代Android作業系統,7.0版本主要通過減少代碼的形式來提升運行速度,Android N的代碼減少了50%,新的代碼減少50%,軟體運行速度提升幅度達到600%,應用安裝提速75%。自從Android5.0換了ART虛擬機器開始,因為安裝時要對大量的代碼進行預編譯,應用安裝速度一直被使用者詬病,Google終於在Android7.0上解決了這一問題。
此外,7.0版本另一個優化是,每次手機升級完系統之後不用等待漫長的應用優化過程,直接就可以進入系統。
Android 8.0:針對低配設備的Android Go,系統/應用啟動優化
8.0相對前幾個版本而言,沒有特別大的提升,畢竟Android已經第十個年頭了,發展已經非常的成熟。8.0版本主要是細節的優化和體驗的提升。8.0版本加入了TensorFlow Lite技術,可以説明低功耗設備跟上當今高強度任務處理,利用新的神經網路API説明底層晶片加速資料處理。這一功能有助於為下一代線上設備提高語音處理,視覺搜索,增強現實等能力。簡而言之,就是一個內置在系統的機器學習工具。
同時,8.0版本還針對應用啟動的進程進行優化,包括併發進程、壓縮收集的垃圾資訊和代碼區域等。此外還有針對後臺服務的限制,防止應用程式在後臺運行太久。目標是大大減少電池消耗。
另外,針對配置較低的移動設備,穀歌還推出了Android Go的系統,它不是一個獨立分支的Android版本,而是隸屬於Android O,可以用於1GB RAM的設備上,例如為了節省性能,原來系統中吃記憶體的過渡動畫被砍掉,同時還針對Android Go開發適配版應用,比如Youtube Go。如果你認為這個系統只是做減法,那你就錯了,在有些方面,穀歌甚至還為Android Go添加了功能,比如資料管理,這個對低端機來說十分重要,穀歌會將這個功能添加到快捷設置中。該系統預計2018年正式面世。
總結
如今iOS 11也已經發佈了,從某些更新內容來看,是對安卓功能的“借鑒”。所以安卓系統在功能性或者可玩性上甚至超過了iOS。由於底層系統的先天不足,導致流暢性在早期落後iOS很多,但隨著穀歌孜孜不倦地優化與更新,Android在流暢性方面真的未必輸於iOS,卡頓、慢和耗電已經逐漸成為歷史。所以,已經存在大家腦海中10年的安卓“卡、慢、耗電”的標籤,是時候該抹去了。