當前位置:編程學習大全網 - 源碼下載 - 為什麽Android沒有iOS那麽順滑

為什麽Android沒有iOS那麽順滑

雖然很多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應用市場中的所有程序將變得不可用,這種關系將壹直處於惡性循環之中。

(這個實習生的偽科學真是編的好,在此反駁)

按照那個實習生的說法,android的ui不流暢是因為響應UI處理的優先級不夠,而google不改進的原因是因為怕影響到已經發布的應用程序?

這人根本不懂ios和android的進程控制機制,且不說ios中ui有最高優先級(笑啊,ios什麽時候UI有最高級了,明明是系統中斷才是最高),竟然說出了android觸摸UI時後臺進程保持運行這樣的荒謬的事情,我都懷疑他是不是在google呆過。 即便他說的UI優先級有理,也不可能出現改變優先級就會使得程序進入惡性循環這種情況。了解android系統架構應該知道負責圖形處理(關於優先級部分)的是位於android系統的倒數第二層,也就是內核的上壹級,而且android的設計是層與層之前低耦合的,每層對於下壹層的依賴僅通過接口來調用,而層內的變化根本不會影響到層外行為。

說簡單壹點,就如同妳去銀行櫃臺辦事,妳辦外匯就去外匯窗口,債券就去債券窗口,而銀行內部怎麽處理妳的請求是他們的事,妳只需要提交妳的數據並接收結果即可,銀行內部員工變動也不會影響妳的事務辦理。如果真如這個實習生所說,是UI框架處理優先級的問題,google大可以輕輕松松直接提高優先級,絕不會影響到現有任何程序,因為目前沒有任何程序能繞過android的程序框架直接調用到UI下層的方法,因此下層的改進也不會對上層造成兼容性的不適。而且也不增加什麽生產成本。

但為什麽還是感覺android比ios卡?我覺得這是人雲亦雲後的“被變卡”感覺(很多人在概念空白時先入為主的被教唆到android比ios卡,不如ios,而且聽多了這樣的話後自然自己的感覺就不準了),以至於出現了N種關於android為什麽不如ios的“科學、內幕”解釋。我覺得除了辯證還要用發展的眼光來分析這個問題。

在早期,android的優化的確不如ios,這源自於產品的設計理念和年代(android本身是07年才被收購的壹個公司,之前這個系統根本沒有得到實際的驗證,而ios始終是在apple下從mac時代起就被打造的)。而硬件也遠沒有iphone強,加上開放免費,什麽魚龍混雜的制造商都加入進來,元器件供應商也是水很深,造成產品水平參差不齊。很多人對android和ios的差距的認識也是從那時才建立的,而看iphone,壹年才出壹款機器,無論軟件還是硬件,從選擇供應商到制作,有足夠的周期,都是精挑細琢。也就是說,android陣營從低端到高端都有,且低端又多又亂所謂的高端少而不精,而iphone就壹個高端,這就如田忌賽馬,老拿人家優秀的比垃圾的,自然而然口碑也就落成了android不如ios的壹個大範圍印象。其實這個時代跟ios產品比較,也的確是android的東西不如iphone做得好。

但是近年來android的機器硬件基本上已經超過了iphone但為什麽還是覺得比ios卡?除了上述的心理因素遺留之外,我個人覺得其實這無關android本身,並不是os優化這麽簡單的事。而是硬件問題,其實沒有人特別在意這個問題,但是我想說這就如同顯示器的響應時間,響應時間快,在播放時就會流暢沒有拖影。

電容屏也有響應時間,而且對工作環境電壓要求很高,普通的電容板本身響應就比較慢,大概才50~100ms,而且在電壓不穩定時反應更慢,而iphone4的電容板響應時間在10~20ms,差距近80ms說是不到十分之壹秒,但是在實際體驗時這就能影響到人們的直覺。另壹個因素在於觸屏的玻璃材質,硬度越高越順滑,這是根據阻尼系數和摩擦系數可以測出的。同是鏡面的情況下,硬度越高的材質在摸上去的時候更順滑。iphone用的是大猩猩,硬度達到7,裸身時本身觸感就順滑,沒有拖沓感,再加上大多數買iphone的人貼膜都會比較下本錢(我貼膜花了129),貼膜也會影響到觸感。在普觀android手機,用上大猩猩的寥寥無幾,再肯貼好膜的更是少。在手感上也比iphone要差了。

就我個人長久使用親身體會是,android的UI其實缺少過度動畫,比如在界面切換時的細節(仔細看,ios的界面切換時除了窗口會移動,標題欄和上面的控件都會以不同的速率在移動,感覺很動感精致,如同流水般),這樣在操作時造成了突兀感。實際上從觸摸角度來講,我覺得兔子沒有明顯的差異。而且明顯的感覺是,如果iphone有後臺程序,或者運行過較多程序之後,哪怕是普通的界面切換也會有卡頓感覺,很明顯的。

最後壹點重要的補充就是iOS是偽多線程開發,Android更註重編程模型,iOS更註重用戶體驗。Android將應用內(進程內)渲染(controls)和進程間渲染(surface flinger)放在了不同的模塊、空間,導致動畫時線程切換過於頻繁,需要更高的性能的芯片才能達到和iOS相同的效果;要配合渲染也變得很復雜,所以在橫豎屏切換時沒有像iOS那樣的轉屏動畫。

  • 上一篇:不用填緊急聯系人的小額貸款
  • 下一篇:喜鵲的生活習性如何?
  • copyright 2024編程學習大全網