為什麼大部分 Android 手機的反應速度(包括系統界面和應用程序)沒有 iOS 設備的那麼流暢?
12-30
問題的起因是源自月光博客的文章: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 |