當前位置:編程學習大全網 - 編程語言 - 有誰知道為什麽即使安卓機的配置再高,可還是不如蘋果的流暢,用得順呢

有誰知道為什麽即使安卓機的配置再高,可還是不如蘋果的流暢,用得順呢

淺析:為什麽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那樣的轉屏動畫。

PS:從官方版本4.1開始 安卓已經逐

步走向成熟

配合硬件的支持 相信屆時的5.0系

統將會是其發展史上的壹個巔峰!

  • 上一篇:編程不是
  • 下一篇:用photoshop 如何做小貼紙
  • copyright 2024編程學習大全網