為什麼安卓機沒有iPhone流暢?
【原文:http://tech.qq.com/a/20150226/009105.htm】
[摘要]Android沒有iOS流暢的根本的原因是,iOS的UI渲染採用實時優先順序,而Android的UI渲染遵循傳統電腦模式的主執行緒普通優先順序。
網友“foto茄”:
為什麼iPhone 6記憶體僅有1GB,而很多安卓機配置相當高了,還是覺得iPhone流暢一些?
騰訊科技:
相信很多網友都有類似疑問,感覺安卓手機在流暢度上不如iPhone手機。先不說一些配置低的安卓機,即便是最新版安卓系統的旗艦手機,也會感覺達不到iPhone手機的那種流暢度,因此有人以此判斷安卓手機不好。
其實,這都是二者系統機制不同導致的差異。
渲染機制不同
Android沒有iOS流暢的根本的原因是,iOS的UI渲染採用實時優先順序,而Android的UI渲染遵循傳統電腦模式的主執行緒普通優先順序。
通俗點說就是iOS對螢幕反應的優先順序最高,使用者只要觸控螢幕,系統就會最優先處理螢幕顯示這個層級,馬上給出動畫效果,然後才處理媒體、服務、核心的架構。
而安卓則是追求程式優先,觸控螢幕後的手機螢幕顯示和動畫效果放在比較後的優先順序。同樣開啟相同的網頁,Android手機就會直接將整個網頁全部載入同時渲染HTML,這無疑就增加了處理器的壓力。因此對於Android來說,一個高效的雙核處理器是很重要的。
在iOS中UI渲染過程具有絕對的優先等級,當使用者接觸到iPhone的觸控式螢幕後,iOS中所有的程式都將停止,UI執行緒攔截了所有的事件,系統會將所有資源用於渲染UI過程,以保證使用者介面的實時渲染優先順序。
而在Android系統中UI渲染過程的優先順序別卻沒有那麼高,也就是說當你觸控Android手機螢幕的時候,系統後臺的程式並沒有停止,仍然在繼續執行之中,比如下載和查收簡訊,這樣系統UI獲得的資源就不夠,這就是Android系統不流暢的原因。
後臺機制不同
安卓手機的後臺是真後臺,像PC一樣,將應用保留在RAM中,當使用HOME鍵退出應用時,程式實際上並沒有完全退出,而是被系統掛在了後臺,為何我們關掉了聊天軟體依然能夠收到訊息通知,因為它常駐系統記憶體。包括平時收到的一些垃圾廣告推送,也是因為後臺有程式執行。
所以這就導致了一個現象,從記憶體使用上來看,安卓剛開機時記憶體使用很低,若不進行清理記憶體操作,正常使用一天,記憶體佔用會達到75%以上。而記憶體佔用越高,使用起來流暢度就會越低,所以安卓機器需要更大的RAM來提升使用者體驗。
而iOS呢,其實是採用的偽後臺,當使用者HOME鍵退出應用時,iOS其實關閉了程式,只保留應用的影象入口,只會預設將應用的最後的執行資料記錄在RAM中。
之所以iOS也能收到推送,是因為當使用者從應用中選擇開啟推送之後,系統會增加一些程式,這些程式會從蘋果伺服器接收資訊,然後再通過伺服器發給使用者,蘋果伺服器在這裡是起到了中轉的作用。而正是因為有了這一系列的機制,所以即便iPhone的配置相比於同類安卓機低了很多,但是iOS還是會給人更加流暢的感覺。
iPhone執行程式的效率比安卓機高
另外,安卓系統的程式語言是Java,特點是通用性強,效率低。而iOS的則為Objective-C,專一性強,效率高。
iOS系統本身優化得很好,而且程式也是直接執行,所以效率很高。而安卓系統是通過Java虛擬機器來執行,系統需要佔用大量記憶體來換取執行速度,也就是要繞了個大圈才執行程式,所以效率低很多。
廠商喜歡給iPhone做優化
由於iOS的封閉性,App Store裡面的App都是在iPhone等產品上執行,硬體利用效率非常高,而且解析度大小,硬體的更新等等引數也比較穩定,優化工作也容易進行,因而iPhone上的App和硬體結合程度比安卓高很多。
安卓手機的硬體配置一樣天天變,開發者也不可能針對所有的機器型號進行開發,只能在比較主流的機器上進行測試並保證執行流暢,所以很多國產中低端安卓手機很難得到流暢的使用體驗。
相關文章
- Twitter為什麼沒有當機?
- Ubuntu 安裝後為什麼沒有中文?Ubuntu
- win10安卓模擬器哪個好_win10什麼版本安卓模擬器更流暢Win10安卓
- 安卓模擬器與真機有什麼差別?安卓
- 安卓工控主機板雙網口有什麼用途?安卓
- 最流暢的遠端桌面,有沒有最流暢的遠端桌面推薦,具體怎麼使用?
- 為什麼Hook沒有ErrorBoundary?HookErrorORB
- Current without potential difference(沒有電位差為什麼還有會電流?🤔)
- 什麼是工控主機?工控主機安卓主機板有哪些配置?安卓
- 當iphone也可以快充以後,安卓機拿什麼競爭市場iPhone安卓
- 怎麼了?我就磕上安卓了!沒有男朋友我也要做安卓安卓
- MySQL Connectors為什麼沒有javaMySqlJava
- OptionalInt為什麼沒有ofNullable()方法Null
- 為什麼雙贊安卓ARM工控主機板應用前景那麼好?安卓
- 為什麼?為什麼?Java處理排序後的陣列比沒有排序的快?想過沒有?Java排序陣列
- [20220415]為什麼沒有子子池.txt
- 萬萬沒想到,iPhone手機拍照也能自帶水印,再也不用羨慕安卓了iPhone安卓
- 安卓測試跟ios 測試有什麼區別?安卓iOS
- 華為暢享8 Plus與暢享8對比 華為暢享8和Plus有什麼區別?
- 中科三方:企業有沒有必要安裝SSL證書?SSL證書為什麼沒有全面應用?
- 為什麼沒有普及128位操縱系統的計算機?計算機
- 蘋果iPhone XR電池只有2900毫安,為什麼是iPhone史上續航最好的手機蘋果iPhone
- 為什麼動態CMOS沒有上拉延時?
- [20230501]為什麼沒有顯示輸出.txt
- 為什麼前端不能沒有監控系統?前端
- 為什麼CAD匯出PDF沒有顏色
- 抖音 apk 為什麼沒有 launchable-activityAPK
- 朝鮮為什麼沒有肺炎確診病例?
- 為什麼我沒有收到贈送的流量
- 為什麼react-redux沒有更新hooks APIReactReduxHookAPI
- iPhone8官翻機和翻新機有什麼區別?怎麼辨別蘋果iPhone官翻機?iPhone蘋果
- 為什麼iPhone拍照更好看iPhone
- Llama 3已能在iPhone或安卓手機上執行iPhone安卓
- python有pypi.org,為什麼golang沒有gopi.orgPythonGolang
- 為什麼我拒絕用Kotlin編寫安卓應用?Kotlin安卓
- 【開發總結】order by 為什麼沒有走索引?索引
- 為什麼抄FGO的都沒有好下場?Go
- 為什麼我們說區塊鏈沒有那麼容易?區塊鏈
- 為什麼win10電腦的耳機沒有聲音_win10電腦耳機沒聲音怎麼辦Win10