Android 的用戶界面相比 iOS 和 Windows Phone 7 響應很遲鈍的根本原因是什麼? | 知乎問答精選

 

A-A+

Android 的用戶界面相比 iOS 和 Windows Phone 7 響應很遲鈍的根本原因是什麼?

2018年10月09日 GOOGLE, 知乎問答精選 暫無評論 閱讀 4 ℃ 次

plus.google.com/10083827

【吳偉的回答(72票)】:

因為沒有認真看微博,在爆料者身份上有出入,抱歉!

爆料人是google的前工程師,不是google的高層。對於以下解釋是否準確,請各位自行判斷。

========================修正分割線 ===================================

就是ios的對用戶操作賦予極高的優先級,只要有用戶操作就立刻暫停其他進程,將資源全部用於響應用戶操作;而安卓則不是,用戶操作時還有很多進程同時工作。

至於為什麼設計這樣的構架,這位工程師解釋是:安卓的研發時間比ios早,那時候大部分移動設備還是靠鍵盤。但是悲劇的是安卓發佈時間比ios晚,而iphone的發佈將觸屏變成了主流操作,安卓為了和ios競爭只好加入對觸屏的支持。但是此時 操作系統構架已經不可能大幅修改了。

【朱磊的回答(25票)】:

這個文章已經寫的很詳細了。尤其是下面這個

It』s not GC pauses. It』s not because Android runs bytecode and iOS runs native code. It』s because?on iOS all UI rendering occurs in a dedicated UI thread with real-time priority. On the other hand, Android follows the traditional PC model of rendering occurring on the main thread with normal priority.

【Han的回答(13票)】:

《一隻IPhone的全球之旅》中介紹,iphone用了專用的芯片處理觸摸屏的信息處理和手勢識別,硬件的差異估計才是比較根本的。用cpu處理ui顯然會卡。「著名電子設備調查機構 iSuppli 就曾經指出,Apple 打破業內常規的把最大部分成本花費在了改善用戶體驗上,因此,我們看 iPhone 的硬件架構就可以發現,為了處理一個小小的觸控屏,apple動用了三塊芯片,一個Broadcom 的模擬信號處理器,用來處理觸控屏傳感器傳來的模擬信號,轉換為一組代表 x、y位置信息的數據流,一個飛利浦(NXP)ARM7CPU,用來作為手勢算法處理器,把觸控指令解析出來(後期 iPhone型號把這兩個芯片整合在一起成為一個雙核結構的處理器,稱為改進型 Broadcom芯片),而主處理器則有一個高級別的優先獨立線程專門處理觸控操作類指令。?

相對於其他電容觸控手機大多把除了模數轉換之外的大部分觸控控制任務都交給主 CPU 的做法,iPhone 能夠有「一觸即發」的操作快感就不難理解了。」

【Omega的回答(11票)】:

1 採用的語言不一樣 ios基於c android基於java 執行效率必須不一樣。

2 ios基於c的語言可以很好的控制內存申請 內存釋放 完全可控。java系的內存控制不能很好的處理內存釋放。比如說你正在操作的時候,系統發現內存不夠了,OK,釋放內存並重新寫入正在運行的程序,用戶的感覺就是卡。

3 ios採用一些專門針對界面優化的代碼,所有的界面顯示 界面移動 界面更新都是在主線程,其他的可以在後台加載,android的我不熟悉,沒寫過。

4 最主要的一點,速度很多時候是人的直覺感受。比如說一個操作,從一個界面切換到另一個界面,如果一個是加了一個動畫,動畫完顯示下一個頁面。另一個是卡頓,加載完顯示。明顯用戶會覺得第一個好。

同時,程序+設計+動畫 如果配合的好,在很多時候可明顯降低用戶等待過程的焦慮程度。

如上。

【王堅的回答(11票)】:

這永遠都不是一個絕對速度的問題,不管硬件提供了多少計算資源總會被軟件吃光,這是一個把響應的優先級調到多高的問題。

蘋果從很早就意識到了這一點,並且不是在iOS裡面才開始實現的,而Windows桌面版、Android、WP直到今天還在應付響應,這應該也是它們「沒有品味」的表現。

【rootme的回答(2票)】:

說的通俗一點就是

?

IOS在用戶觸摸屏幕的時候觸控指令的優先級是最高的,所佔資源也最大,其他程序在這個時候都被掛載起來。

?

而安卓在執行觸控的時候後台程序任在運行,佔用資源較少。這個就是最根本的原因;

?

為什麼這麼設計?因為安卓系統最初開發的時候把對手擬為黑莓,鍵盤輸入相對來說資源佔取就比較少,但隨後迎來了觸控時代,這個時候如果想重新構架的話也不太可能了,這意味著所有安卓軟件需要重新進行設計。

【kandynan的回答(2票)】:

android是個開放的系統,所有廠商都可以使用;但是廠商採用的硬件配置都不一致,對其做相應的優化工作少之又少。而wondows phone 7和IPHONE是一個封閉的系統,閉源代碼,他們可以針對硬件進行優化提升終端的響應速度。

【峰子饒的回答(2票)】:

android和iOS讓我感覺對比最強烈的是:android系統往往可以以很高的速度進行滾屏,但是滾到一定階段就會卡一下;點開或者關閉一個程序,反應延時其實是很小的,但是其過渡動畫也可能會卡。

但是,iPhone給人的感覺有所不同:關閉一個程序的時候,從按下按鍵到程序退出過渡動畫的播放,中間有一個明顯的滯後,但是過渡動畫播放過程非常流暢。另外,滾屏的時候,不會像Android那樣,允許很高速度的滾動,感覺更加的"粘手"。

我覺得造成UI體驗差異的原因,可能還是UI整體設計的問題,並不多是android與硬件優化效率不高導致的。另外,觸屏處理的硬件,還有屏幕本身,可能蘋果採用的硬件方案也相對來說比一般的安卓手機廠商用的要好。

【右醜的回答(3票)】:

得票數最多的吳偉說的真心不對,這個說法也沒什麼原創性,當時就有人批判過,我簡單說下我的看法:從軟件上來說,由於ios的偽任務機制(其實用推送來代替真正的後台是個不錯的機制),?資源的佔用較少,?對所以流暢些是必然的;從硬件來說,有報道曾經指出,ios對於觸摸屏的數據處理有一個單獨的ARM處理器來進行處理,而android全部交給CPU來處理,

(相當於多媒體播放中的硬解和軟解,肯定是硬解對資源的佔用少、效率高,但是成本也較高)

也就是@Han所說的「因此,我們看 iPhone 的硬件架構就可以發現,為了處理一個小小的觸控屏,apple動用了三塊芯片,一個Broadcom 的模擬信號處理器,用來處理觸控屏傳感器傳來的模擬信號,轉換為一組代表 x、y位置信息的數據流,一個飛利浦(NXP)ARM7CPU,用來作為手勢算法處理器,把觸控指令解析出來(後期 iPhone型號把這兩個芯片整合在一起成為一個雙核結構的處理器,稱為改進型 Broadcom芯片),而主處理器則有一個高級別的優先獨立線程專門處理觸控操作類指令。 ?相對於其他電容觸控手機大多把除了模數轉換之外的大部分觸控控制任務都交給主 CPU 的做法,iPhone 能夠有「一觸即發」的操作快感就不難理解了。」」

所以有些遲滯也是必然的。

【馮東的回答(1票)】:

不完全同意 @吳偉 和 @朱磊 的回答。因為目前還沒有真正接觸過 iOS 代碼的人參與討論。在?@吳偉 和 @朱磊?引用的那篇文章下面的評論裡有人指出,iOS 提供了相當多的機制可以讓開發者把任務遷移到後端線程,並且提供了相當多的機制讓後端線程讓出優先級給主線程。問題在於,Android 提供的便利機制雖然比較少,但是也並沒有禁止開發者這麼做。所以評論者認為原因在於 culture 而非技術。因為 iOS 的開發者更願意利用 iOS 的機制進行 UI 微調。

【段凌雲的回答(1票)】:

請看這篇文章(譯文):cnbeta.com/articles

原文:plus.google.com/10505198

【李映輝的回答(0票)】:

IOS和WP7類似都是使用的墓碑式程序運行方式,每新啟動一個應用,之前所開的應用都被掛載了起來,所以IOS不能真正的多任務,android方面對其中一個問題是使用的JAVA虛擬機來模擬的,導致硬件的使用率不夠高,當然這個只是個人理解,也請別人指正錯誤

【李蕾的回答(0票)】:

我從使用體驗上,感覺android系統設計應該是有問題的,一個手機,普通用戶指望那麼多後台進程幹什麼? 雖然你是linux內核的,也不需要做成手機服務器吧,而且越多後台進程,不是越危險嗎?

【周恩權的回答(0票)】:

Android底層需要優化,需要提高用戶操作的優先級,以保證快速的響應,後台服務慢點也沒有關係;對用戶體驗的影響不大;

【張睿的回答(0票)】:

前段時間Google+上的大坑就是關於這個的吧,前面有人貼了,總的來說就幾點。

1. Android有硬件加速,而且3.0以後支持很好了

2. 但是硬件加速佔用資源太多,所以google很多時候關了

3. 窗口內容是軟件渲染

4. 網頁來說,IOS用title比Android用list更好。

亂說一氣,還是看google+上原文好

【何臻的回答(0票)】:

主要是安卓初期的渲染架構不完善,而後期幾乎沒法做出質的修改

【tsingJ的回答(0票)】:

gpu在一定程度上 占一部分因素

【王波的回答(1票)】:

前戲不夠

【莊健的回答(0票)】:

Android的內存管理貌似需要優化,感覺比WP還費資源,這點iOS做的好,希望ICS能有改進。

【付強的回答(0票)】:

月光論壇也發過這個題目的文章,lz可以不做這些工作麼,別人都做過了

【魏文坤的回答(0票)】:

兼容問題。優化問題、、、

【pansz的回答(0票)】:

android到4.0開始才全部強制用gpu硬件渲染界面,效果上肯定不能比。另外android有真正意義上的多任務,這往往會影響性能。

【Sedgwickz的回答(1票)】:

android機器配置從低到高跨度很多,windows phone機器最少為512RAM,CPU也都是1G以上,你說的遲鈍也有可能是拿了android低端機和windows phone做了比較。如果配置相當,依然慢的話,首先考慮是程序設計上的問題,包括設計和算法的實現。至於語言與平台本身,我覺得應該不會差距太大。

標籤:-Android -iOS -Windows-Phone-7 -用戶界面 -吳偉


相關資源:





給我留言