close

雖然很多 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 流暢的原因並非 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 應用市場中的所有程式將變得不可用,這種關係將一直處於惡性循環之中。

arrow
arrow
    文章標籤
    Android
    全站熱搜

    tcr889 發表在 痞客邦 留言(0) 人氣()