為什麼大部分 Android 手機的反應速度(包括系統界面和應用程序)沒有 iOS 設備的那麼流暢?

問題的起因是源自月光博客的文章:http://www.williamlong.info/archives/2918.html

不知道知乎有沒有人能做個合理解釋。


最關鍵的地方是

iOS一直都在使用三重緩存

而Android 從4.1開始也採用了這個東西(整個系統它們叫做黃油計劃"project butter")

很容易注意到從4.1開始,Android和iOS擁有相同的流暢程度。

但是android這種linux kernel--中間層/dalvik--android framework--app的結構在性能上的劣勢總是存在的,即便可以通過NDK提供的JNI機制使用C/C++編寫的庫


拿相同價位的比較就沒問題。

否則就像問為什麼你的兩千塊的電腦比人家四千塊的電腦慢一樣。

絕大部分 android 手機比 iphone 便宜。


這是兩者的系統架構不同導致。

  • 首先是iOS對屏幕反應的優先順序是最高的(Touch-Media-Service-Core架構),也就是說用戶只要碰了屏幕,系統最優先去處理屏幕顯示,然後才是其他。而安卓則是傳統的Application-Framework-Library(JAVA虛擬機)-Kernal架構,圖形圖像處理在Library這層,優先順序不是那麼高。如果系統負荷較高,則無暇顧及用戶觸摸的反應。

  • 其次是iOS對圖像的各種特效處理(放大、縮小、旋轉、滾動等)都是基於GPU硬體加速的,與APP無關。這是APPLE採用封閉式硬體的優勢。而安卓為了適應不同的手機硬體,做不到這點,很多APP的圖形特效都靠APP自己去進行軟體渲染,效率低。最新的4.1已經改進,但也無法做到所有特效都靠GPU硬體加速。

  • 最後就是安卓的JAVA虛擬機:相對iOS的Objectiv-C,JAVA天生運行效率低下,需要佔用大量內存來換取執行速度,而不定期的內存自動回收機制,直接導致安卓界面的卡頓現象,無論如何優化也不可能改掉。2.3版安卓就是為改善此設計而發布:引入了一種新的並行內存回收機制來減輕這種卡頓影響,但也僅僅是減輕,而無法徹底消除。也因此2.3版成為安卓重要的里程碑。


我不覺得galaxy S3的觸控體驗要慢於iphone5,難道是我遲鈍?


首先,ios只針對自家手機,是從硬到軟的一整套解決方案,軟硬相互配合,整個通路上沒有堵塞。而android是一個相對開放的系統,交給各硬體廠商單獨適配各自的硬體,總會有適配不好的。就像你給寶馬的車身配了個賓士的發動機,雖然都是頂級配置,但磨合上肯定存在一定問題。

另外,ios用的是objectiveC,而android是JAVA Dalvik,性能上肯定存在一定差距,不過android在積極測試ART,根據百科上面的解釋,在 Dalvik 下,應用每次運行的時候,位元組碼都需要通過即時編譯器轉換為機器碼,這會拖慢應用的運行效率,而在 ART 環境中,應用在第一次安裝的時候,位元組碼就會預先編譯成機器碼,使其成為真正的本地應用。這個過程叫做預編譯(AOT,Ahead-Of-Time)。這 樣的話,應用的啟動和執行都會變得更加快速。


進入android4.1時代,這個問題應該每什麼好爭的了吧?安卓也支持GPU渲染了 60FPS刷新率

誰還敢說android不如IOS流暢?


可以參考這個問題

為什麼 Android 在同樣的硬體條件(甚至是更好的硬體)下沒法做到 iOS 下那樣的流暢?

http://www.zhihu.com/question/19781876


這個跟硬體有關係,但關係不大。 其實,ios的流暢感是軟流暢,即刷屏,旋轉等動作是軟體控制的。而其速度是apple投入大量的時間和金錢,通過實驗得來的數據。比如以什麼速度翻頁,對大多數人來講最平滑?在你反轉手機多少毫秒後,旋轉屏幕最符合常理?這是屬於實驗心理學和認知科學的實驗。價錢高並不代表硬體一定要好,軟體才是設備的靈魂。


輸的是系統架構,以及隔著虛擬機的執行效率


原因大家都提到了很多,但我覺得最重要的一點是」開放「導致安卓設備不同,硬體不同,無法做到能像在iOS設備上同等程度的優化。

舉一個憂傷的例子,可能不是很靠譜,在Nexus 4上刷一些國際化的軟體比別的設備(硬體同級或更高級)就流暢一些。

如果要黑一下。。」度娘貼吧「在什麼設備上都會莫名突然卡住!

以上內容都在強調」軟體的優化「


一直想深入了解底層架構,可惜學業不精 只能宏觀吹吹水啊。。。


ios的設備都是流暢度優先,它會在你滑動的時候將其他一些功能關閉!所以蘋果的產品在用戶體驗上面做得很好!


系統的最基礎構架已經決定了 android 除非革新整個系統才能完善


因為有些高端大氣的果粉閉著眼睛矯情啊,逼格太高;

手機硬體發展太快了,安卓不比ios卡頓了,即使打開一個程序有零點幾毫秒的慢,鈦合金眼睛也不能覺察出來!!

如果是兩年前,噴安卓卡頓可以,現在即使兩千價位的國產機也不會卡頓,3000價位的國外機也不會卡頓了。


關鍵還是虛擬機的機制,Dalvik虛擬機通過Zygote機制保證了每個進程都有自己的虛擬機,相應的UI渲染的優先順序比較低,但是多任務處理更好,不至於崩潰一個應用所有服務都崩潰


推薦閱讀:

iPhone 4 連接電腦同步結束斷開連接,拔下數據線後電腦會重啟或藍屏,什麼原因?
ios5中「其他」都快1G了,請問怎麼清理?
饑渴營銷是短期行為還是長期行為?比如iphone4缺貨大半年,還被稱為饑渴營銷,確實如此嗎?
如何優雅地利用舊 iPhone?
iPhone 長時間打開手電筒類應用,對閃光燈是否有傷害?為什麼?

TAG:iPhone | iPhone4 | iOS | 蘋果公司AppleInc | Android手機 | Android | iOSvsAndroid |