【pansz的回答(88票)】:
這是應(yīng)用設(shè)計(jì)水平問題。
Android里面什么渣應(yīng)用都能過審核都能上架,所以開發(fā)商通常不自覺的降低了對Android應(yīng)用性能的優(yōu)化。實(shí)際上只要用心優(yōu)化,Android應(yīng)用一樣可以很跟手,只不過大多數(shù)產(chǎn)商沒動(dòng)力做而已。
親兒子裝google原生應(yīng)用是很稱手的,一部分對Android很認(rèn)真的開發(fā)者也開發(fā)出了在Android下體驗(yàn)很好的應(yīng)用?!徊贿^這些開發(fā)者一般就沒怎么在意iOS版本而已。
開發(fā)者的能力是有限的,傾向性是明顯的,ios版做得好的應(yīng)用,Android版本經(jīng)常不認(rèn)真做,而Android版做得好的應(yīng)用,iOS版很可能沒有或者很簡陋。
【FedericoMo的回答(21票)】:
這不是嘴里說說是“應(yīng)用水平設(shè)計(jì)問題”就一定是“應(yīng)用水平設(shè)計(jì)問題”的。
首先看一段視頻,iPhone 4(2010年)與Nexus 4的(2012年)的scroll test。抱歉沒有找到更新機(jī)型的用高速攝影機(jī)拍攝然后慢速回放的對比。
youtube原地址https://www.youtube.com/watch?v=HrmxEo16mVo
優(yōu)酷地址(密碼123456)
Nexus 4 vs iPhone 4 Scroll test //v.youku.com/v_show/id_XNzQzMzgwNDc2.html
明顯可以看出,從手開始上下滑動(dòng)到頁面開始滾動(dòng),Nexus 4上手指移動(dòng)的距離更大,比iPhone 4晚一拍。這就是樓主說的不跟手現(xiàn)象。這是主管感受。再來看看客觀測試是不是與主觀感受一致。
請看TouchMarks I: Smartphone Touchscreen Latencies和TouchMarks II: Touchscreen Latencies in Flagship Tablets
可以看出,即使是2010年的iPhone 4,也比2013年的Android和Windows Phone旗艦機(jī)屏幕反應(yīng)速度快,而iPhone 5更是快了1.5倍。iPad mini和iPad 4,更是比Nexus 7 2013版快了1.5至近2倍??梢钥闯?,即使是2010年的iPhone 4,也比2013年的Android和Windows Phone旗艦機(jī)屏幕反應(yīng)速度快,而iPhone 5更是快了1.5倍。iPad mini和iPad 4,更是比Nexus 7 2013版快了1.5至近2倍。
關(guān)于為什么更快,該網(wǎng)站給出的原因可能有兩個(gè):
【何明濤的回答(15票)】:
咱覺得這版微博優(yōu)化還行,硬件加速、圖片延遲加載都有,我手邊三年前的機(jī)器都能跑到滿幀。題主可以去下個(gè) FPS Meter(測幀數(shù)的,需要 ROOT 權(quán)限,MIUI 需要允許懸浮窗),然后再去刷你的微博,滾動(dòng)時(shí)右上角接近 60FPS 的話,@Draco Leo 的答案就很可能是最符合你的提問的 —— 問題在于手機(jī)屏幕調(diào)教,而不在 App 開發(fā)者。
其實(shí)只要是觸屏,都肯定會有輕微的延遲??梢試L試在開發(fā)者選項(xiàng)里把「顯示觸摸操作」打開,然后手指在屏幕上畫圈,不需要很快 —— 如果完全沒有延遲的話,圓點(diǎn)就應(yīng)該可以一直被手指遮住 —— 但實(shí)際上,無論是什么 Android 設(shè)備,一定可以看得到指示觸摸的圓點(diǎn)。
以及,在滿幀情況下的這種「滑動(dòng)不跟手」,還有可能是軟件本身就是這么設(shè)計(jì)的滾動(dòng)算法 —— 比如有幾個(gè)版本的 Sense 里自帶相冊的縮放和滑動(dòng)都不跟手得很夸張;比如在 GO 桌面的設(shè)置里,你可以把滑動(dòng)速度調(diào)到最慢,就會發(fā)現(xiàn)雖然流暢依舊,但明顯不跟手;又比如 Wacom 的「卷動(dòng)」,也是可以按個(gè)人喜好,使?jié)L動(dòng)視圖完全不跟手(更快或者更慢)。
對于電容屏而言,屏幕采集到手的「軌跡」,其實(shí)是一系列連續(xù)的點(diǎn)。如果在 Android 的開發(fā)者選項(xiàng)里打開「指針位置」,快速地在屏幕上劃一下(劃完后手指離開屏幕),在末端會看到有軌跡不止一條:
藍(lán)色那個(gè)就是屏幕采集的實(shí)際軌跡(可以看到是幾個(gè)點(diǎn)連接成的),紫色的是推算的「手指離開屏幕」過程的平滑軌跡。// (由于看不出軌跡隨時(shí)間的變化過程,這個(gè)并不能解釋滾動(dòng)視圖不跟手的現(xiàn)象。)
顯然,無論是哪個(gè)次元的算法,不經(jīng)過幾個(gè)采集周期,就無法得到紅色的平滑曲線。滾動(dòng)要做到平滑流暢,也是要對多個(gè)采集點(diǎn)上的速度做平均,所以某種意義上,完全的「跟手」是不存在的 —— 只不過是 iOS 設(shè)備的軟硬件都足夠優(yōu)秀,這一過程處理得足以讓人的感官認(rèn)為是「跟手」的。
類似這樣的「考慮到硬件采集的觸摸軌跡本身不平滑,于是延遲一段時(shí)間來算平滑軌跡」的設(shè)計(jì)還有——
【陽光與蘿卜的回答(7票)】:
測試流暢度,其實(shí)可以試試這個(gè)
可以試著滑動(dòng)各種應(yīng)用,下面的波浪越高,說明越卡。 可以試著滑動(dòng)各種應(yīng)用,下面的波浪越高,說明越卡。
至于其他的就不多說了,我只知道Nexus5 4.4.4+ART流暢度一點(diǎn)都不弱于5s。
【方振宇的回答(9票)】:
其實(shí)我覺得最主要還是開發(fā)者對于應(yīng)用的優(yōu)化不夠,太多的Overdraw和Layout方面的問題,Android開發(fā)者本身為了適配屏幕分辨率和解決其他一些兼容性問題已經(jīng)耗費(fèi)很多精力了,很少有開發(fā)者會花很多精力去做細(xì)致的性能優(yōu)化,有的甚至連優(yōu)化的方向都不知道?,F(xiàn)在的官方微博客戶端要我看在Overdraw方面還是很嚴(yán)重,然后在異步加載圖片的時(shí)候幀率也不夠穩(wěn)定,算不上流暢。再則由于Android平臺本身機(jī)能沒有強(qiáng)大到優(yōu)化爛的應(yīng)用也能跑的非常流暢暴露了優(yōu)化不夠的事實(shí),特別是手機(jī)廠商的定制ROM相比原生系統(tǒng)都一定程度犧牲了一些流暢性導(dǎo)致這個(gè)問題顯露的更加明顯,所以在Android上面作出流暢的應(yīng)用要付出比iOS更多的精力。
其實(shí)Google這些年一直在系統(tǒng)層面作出努力提升系統(tǒng)的UI性能,從硬件加速到Project Butter到Reorder&Merge繪圖操作等等,但是我感覺Google對于Android開發(fā)最佳實(shí)戰(zhàn)宣傳不夠,國內(nèi)有多少開發(fā)者上Youtube看過I/O大會上面的Android Session?幾乎每年都有講關(guān)于系統(tǒng)圖形性能方面的Session。所以這里面也有國內(nèi)開發(fā)者開發(fā)水平和眼界的問題。
綜上所述:一是受限于Android平臺本身性能不夠強(qiáng)大做出相同流暢度的應(yīng)用比iOS更加困難,二是國內(nèi)開發(fā)者對于Android開發(fā)性能優(yōu)化方面的最佳實(shí)踐知之甚少。
【何浪的回答(6票)】:
這是兩個(gè)系統(tǒng)對觸摸屏的優(yōu)先級先后差異造成的。
iphone的屏幕或者是說ios系統(tǒng)認(rèn)為手指觸摸屏幕擁有很高的優(yōu)先級,系統(tǒng)會先執(zhí)行一些操作來響應(yīng)你的滑動(dòng)屏幕這一操作。
而安卓系統(tǒng)把這一行為優(yōu)先級放的很低,你用手指觸摸了屏幕,系統(tǒng)卻先做別的事情,然后再來進(jìn)行屏幕的變化。
當(dāng)然,還有其他方面的原因。具體參見四大因素決定 淺析iOS為什么比安卓流暢這里講的比較好。你可以看看,我覺得很有道理。
【知乎用戶的回答(11票)】:
是系統(tǒng)的問題。
應(yīng)題主問題,這里只討論滾動(dòng)視圖的情況
不是開發(fā)者無能、不作為。事實(shí)上,大部分ip程序也是完全沒有優(yōu)化的,可以說寫得非常糟糕,但是這樣的程序在ip上(滑動(dòng))運(yùn)行得非常流暢。
僅滑動(dòng)來說,使用系統(tǒng)標(biāo)準(zhǔn)控件,不做任何額外優(yōu)化,iOS程序比安卓程序流暢許多,這很明顯是系統(tǒng)庫的差異而不是程序員的差異。
也不是ip硬件強(qiáng)大,ip4現(xiàn)在已經(jīng)不是什么高級貨了,2000多塊錢的手機(jī),滑動(dòng)依然非常流暢,超過同配置的安卓手機(jī)。
我給安卓和iphone都寫過不少程序,安卓圖形系統(tǒng)做得不好是客觀事實(shí)。
版本4.0之前的安卓有多不流暢,對比過就一目了然。
安卓系統(tǒng)一直以來都在進(jìn)步是事實(shí),仍然不夠好也是事實(shí),希望它以后能越來越好能夠和iOS強(qiáng)力競爭。
注意題主的說明,不要隨意批判。
如題,比如刷微博時(shí)上下滾屏明顯不如iPhone跟手(即便是13,14年的旗艦機(jī),拖動(dòng)起來也沒有10年的iPhone4跟手),這是安卓系統(tǒng)底層跟iOS的差距,還是說安卓手機(jī)的屏幕反應(yīng)速度都不如iPhone的?
【知乎用戶的回答(4票)】:
硬件:iPhone的屏幕響應(yīng)速度比絕大多數(shù)Android手機(jī)都要快
應(yīng)用:由于Android對第三方應(yīng)用限制寬松,一些應(yīng)用使用了非官方控件,代碼優(yōu)化不好會嚴(yán)重影響反應(yīng)速度。這方面國產(chǎn)應(yīng)用最多
系統(tǒng):Android手機(jī)廠商大都對系統(tǒng)進(jìn)行了定制,如果只是改改顏色、按鈕樣式對應(yīng)用影響不大,但很多定制ROM會改變一些系統(tǒng)底層文件,從而影響第三方應(yīng)用運(yùn)行,比如smartbar。
版本:Android手機(jī)有多個(gè)版本分布,雖然Google play services能為低版本系統(tǒng)提供最新API支持,但國內(nèi)手機(jī)大都不帶Google apps,新版本應(yīng)用對低版本系統(tǒng)的支持度肯定不好。
說這么多,其實(shí)我想說的是,手機(jī)硬件發(fā)展到今天,除非你買了個(gè)四五百塊錢的Android手機(jī),不然流暢性已經(jīng)不會影響你使用Android手機(jī)的體驗(yàn)了,普通用戶也感覺不出來那幾十毫秒差別的響應(yīng)速度。
【DracoLeo的回答(8票)】:
你們只看到了開發(fā)者,忽視了手機(jī)。大多數(shù)手機(jī)的屏幕調(diào)教決定了不可能跟手。不信去開發(fā)者選項(xiàng)勾選顯示觸摸操作,然后快速在屏幕上亂畫,你看那個(gè)圓點(diǎn)的運(yùn)動(dòng)軌跡。大多數(shù)都不跟手。這種手機(jī)應(yīng)用再好也會有影響的。
【tinyCosmos的回答(5票)】:
感覺是系統(tǒng)的問題。
iOS中滑動(dòng)用的是UIScrollView的子類,蘋果給UIScrollView提供的API也沒有可以讓開發(fā)者自己控制響應(yīng)時(shí)間和滾動(dòng)速度的…而且,引入了ARC后開發(fā)者也不太需要關(guān)心內(nèi)存釋放什么的…
在Xcode里建一個(gè)空的模版,讓它視圖是scrollView,初始化后其它各種屬性值不去設(shè)置,delegate也不設(shè)置(就是除了初始化后啥都不干),然后放機(jī)器上跑,上下滑動(dòng)照樣好好的。
而且關(guān)于觸摸響應(yīng)(UITouch,UIResponder)以及手勢(gesture)蘋果封裝的比較好,開發(fā)者自己基本不需要再做修改,除非有特別的需要才去自己寫一些和相對底層一點(diǎn)的東西打交道的類。
所以并不覺得是開發(fā)者的問題,或者說,大部分還是系統(tǒng)的原因吧。
--------------------------------------------
在做iOS開發(fā),自己用的iOS系統(tǒng)。所以只能單方面從iOS的角度來說。偶爾也玩下安卓(同學(xué)的),也感覺到了滑動(dòng)某些時(shí)候的問題。
【付連琛的回答(4票)】:
系統(tǒng)問題 android在界面上觸摸感覺界面滑動(dòng)很輕盈 這就是跟手 在android有點(diǎn)沉重 在系統(tǒng)自帶的設(shè)置里就能感覺到 特別是在設(shè)置里的應(yīng)用程序里 打開這個(gè)界面是會計(jì)算程序大小 需要大量讀寫存儲器 不跟手更加明顯 。android程序可以優(yōu)化到不卡 但是還是比不上ios跟手 這是系統(tǒng)問題 多任務(wù)和ui處理優(yōu)先級等原因造成的。
【clockred的回答(0票)】:
根據(jù)我的測試,同樣應(yīng)用三星s4和iphone相比觸摸響應(yīng)時(shí)間有比較明顯的延遲
【XSky的回答(0票)】:
晚上看文檔看到一點(diǎn)東西,供參考。
原網(wǎng)址:http://developer.android.com/training/improving-layouts/smooth-scrolling.html
The key to a smoothly scrolling ListView is to keep the application’s main thread (the UI thread) free from heavy processing. Ensure you do any disk access, network access, or SQL access in a separate thread. To test the status of your app, you can enable StrictMode.======================================================================
對于不跟手的現(xiàn)象,我覺得是因?yàn)橛|摸屏響應(yīng)慢了點(diǎn),不是有測試說iPhone的觸摸屏響應(yīng)速度最快么?對于流暢,我覺得與GPU渲染有關(guān),我手上的手機(jī)是Moto G,運(yùn)行Android 4.4.4,GPU渲染是開著的,使用知乎客戶端的時(shí)候,怎么滾動(dòng),都是流暢的,還有一臺電信送的華為機(jī),GPU渲染沒有開,使用知乎客戶端時(shí),上下滾動(dòng)會有卡頓。
【知乎用戶的回答(0票)】:
瀏覽過全部答案和評論,我只是發(fā)現(xiàn)一個(gè)很好玩的現(xiàn)象
開發(fā)者基本都承認(rèn)是系統(tǒng)問題。系統(tǒng)優(yōu)先度,和API調(diào)用處理都不一樣。
即使是直接調(diào)用系統(tǒng)API完成的應(yīng)用,也跟IOS相差一些。請問我該怎么優(yōu)化?
然而回答被反對。
而使用者大多指責(zé)說是開發(fā)者的問題,優(yōu)化不夠,市場不對,或者價(jià)格問題。
對于說市場的,別把谷歌商店吹的太神了。
我就想指教一件事,同樣是QQ在google appstore下載跟我在豌豆莢下載有什么區(qū)別么?
【金佳繼的回答(0票)】:
題主看這里~看這里~~這里有正確答案~~
這是兩個(gè)系統(tǒng)渲染機(jī)制的問題
以下為引用
“iOS的UI渲染采用實(shí)時(shí)優(yōu)先級,而Android的UI渲染遵循傳統(tǒng)電腦模式的主線程普通優(yōu)先級。
這聽起來似乎很抽象和難以理解,但大家可以嘗試一下,使用你的iPad或者iPhone,打開Safari,然后加載一個(gè)復(fù)雜的網(wǎng)頁,例如新浪網(wǎng)首頁,當(dāng)網(wǎng)頁加載到一半的時(shí)候,把你的手指放在屏幕上,并且四處移動(dòng),你會發(fā)現(xiàn)所有的渲染立刻停止,在你拿開手指前,網(wǎng)頁永遠(yuǎn)也不會繼續(xù)加載。
而在Android設(shè)備上重復(fù)這個(gè)操作,你會發(fā)現(xiàn),瀏覽器會繼續(xù)嘗試加載頁面并渲染HTML,試圖多任務(wù)同時(shí)進(jìn)行,因此對于Android來說,一個(gè)高效的雙核處理器是很重要。
在iOS中UI渲染過程具有絕對的優(yōu)先等級,當(dāng)用戶接觸到iPhone的觸摸屏后,iOS中所有的進(jìn)程都將停止,UI線程攔截了所有的事件,系統(tǒng)會將所有資源用于渲染UI過程,以保證用戶界面的實(shí)時(shí)渲染優(yōu)先級。而在Android系統(tǒng)中UI渲染過程的優(yōu)先級別卻沒有那么高,也就是說當(dāng)你觸摸Android手機(jī)屏幕的時(shí)候,系統(tǒng)后臺的程序并沒有停止,仍然在繼續(xù)運(yùn)行之中,比如下載和查收短信,這樣系統(tǒng)UI獲得的資源就不夠,這就是Android系統(tǒng)不流暢的原因。”
如果題主嘗試下 windows phone,你會發(fā)現(xiàn)微軟在這方面做的比蘋果好。比如在微信朋友圈中下拉,ios會有一點(diǎn)點(diǎn)卡,wp順滑到底。
【小斷的回答(0票)】:
是開發(fā)者問題。單純比較安卓和IOS的流暢度,一定要用最新的nexus進(jìn)行對比。然后你會發(fā)現(xiàn)單是‘’微博‘’這個(gè)應(yīng)用流暢度是沒差的。但是總體應(yīng)用質(zhì)量安卓是要比IOS差。
【邵元錕的回答(0票)】:
系統(tǒng)優(yōu)化方面做得不好吧,還有第三方對應(yīng)用的隨意開發(fā)
【金子辰的回答(0票)】:
其實(shí)我覺得不只是@pansz說的應(yīng)用設(shè)計(jì)水平的原因。要是用幾百塊錢或者2~3k的5寸大果粒老掉牙雙核心處理器的騙錢機(jī)(我說的是棒子你懂的)跟一眾旗艦或是當(dāng)代的iPhone比你當(dāng)然是會有想死的感覺,如果要比至少要是價(jià)格差不多或者配置說的過去的安卓手機(jī)和iPhone/iPad比好吧。一味的說安卓比蘋果卡的希望你至少要過過腦子謝謝
原文地址:知乎
聯(lián)系客服