不過,這個實習生 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 應用市場中的所有程式將變得不可用,這種關係將一直處於惡性循環之中。
英文原文:『Follow up to “Android graphics true facts”, or The Reason Android is Laggy』
中文翻譯:http://www.williamlong.info/archives/2918.html
☆數位夢想☆ 由 Redwolf 製作以 創用CC 姓名標示-相同方式分享 3.0 台灣 授權條款 釋出
沒有留言:
張貼留言
1、本留言處歡迎多加留言交流,但不歡迎垃圾留言及廣告留言
2、留言時可以使用部份 HTML 標記
3、對於教學文章介紹或軟體使用有問題歡迎提出,若站長沒回應表示不清楚該問題的解決方案
4、留言時請勿留下電子郵件,以免因搜尋引擎爬文而造成您的困擾,且站長不會寄相關郵件給您,僅會在留言區提供解決方案
5.站長保留不當刪除留言的權力,若造成不便尚請見諒