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