為什麼Android沒有iOS那麼順滑

發表於2011-12-11

來源:月光部落格

雖然很多Android手機的配置都比iPhone要高,比如大多數Andorid手機的記憶體都有1GB,而iPhone 4S只有512MB記憶體,但用過iPhone的人都知道Android手機在使用的時候總感覺沒有那麼順滑,究竟為什麼會出現這種現象呢?一位軟體工程師和前Google實習生Andrew Munn解釋說是因為Android系統UI效率低下的框架設計的問題。

不過,這個實習生Andrew Munn是一個軟體工程專業的本科畢業生,他在Android團隊並沒有在框架團隊工作,也沒有看過Android渲染的原始碼,因此他所說的未必是100%準確。並且他也曾經在Windows Phone團隊工作過,因此可能會不自覺的對Android產生偏見。以下就是他對Android為什麼沒有iOS流暢體驗的看法。

為什麼Android沒有iOS那麼順滑

Android沒有iOS流暢的原因並非Java GC導致暫停,也不是因為Android執行的是Java編譯的bytecode而iOS執行的native code,根本的原因是,iOS的UI渲染採用實時優先順序,而Android的UI渲染遵循傳統電腦模式的主執行緒普通優先順序。

這聽起來似乎很抽象和難以理解,但大家可以嘗試一下,使用你的iPad或者iPhone,開啟Safari,然後載入一個複雜的網頁,例如新浪網首頁,當網頁載入到一半的時候,把你的手指放在螢幕上,並且四處移動,你會發現所有的渲染立刻停止,在你拿開手指前,網頁永遠也不會繼續載入。

而在Android裝置上重複這個操作,你會發現,瀏覽器會繼續嘗試載入頁面並渲染HTML,試圖多工同時進行,因此對於Android來說,一個高效的雙核處理器是很重要的,這也就是Galaxy S II能夠非常平滑的原因。

在iOS中UI渲染過程具有絕對的優先等級,當使用者接觸到iPhone的觸控式螢幕後,iOS中所有的程式都將停止,UI執行緒攔截了所有的事件,系統會將所有資源用於渲染UI過程,以保證使用者介面的實時渲染優先順序。而在Android系統中UI渲染過程的優先順序別卻沒有那麼高,也就是說當你觸控Android手機螢幕的時候,系統後臺的程式並沒有停止,仍然在繼續執行之中,比如下載和查收簡訊,這樣系統UI獲得的資源就不夠,這就是Android系統不流暢的原因。

由於這個原因,新發布的Galaxy Nexus,甚至配備四核處理器的話說EeePad Transformer Prime平板電腦都無法保證順滑的操作體驗,這些裝置只能與3年前的iPhone順滑程度相比,那麼Android團隊為什麼不從根本解決這個問題呢?

除了UI渲染之外,Android缺乏有效的的硬體加速也是一個原因,在不同的Android手機上的硬體加速存在巨大差異,而蘋果是唯一一個既做硬體又做軟體的手持裝置公司,只有蘋果可以在硬體中插入對軟體的優化,使得基於蘋果晶片的裝置不僅省電,而且流暢。

實際上,Android的開發工作在第一代iPhone釋出之前就已經開始了,原始Android原型體被設計成為使用鍵盤手機的裝置,也就是黑莓手機的競爭對手。UI渲染優先順序別在有鍵盤的手機上並沒有那麼重要。但是在iPhone釋出之後,Android小組為了快速推出能與iPhone競爭的產品,迅速將Android改成觸控式螢幕手機系統,但那時重寫UI框架已經不可能了。因為如果這樣Android應用市場中的所有程式將變得不可用,這種關係將一直處於惡性迴圈之中。

英文原文:Follow up to “Android graphics true facts”, or The Reason Android is Laggy

參考閱讀:iPhone為什麼比Android好

相關文章