① 安卓系統卡頓的原因
現在移動設備的流行,很多人發現有些APP在IOS系統比在安卓系統上流暢,根據這一問題大家展開了激烈的討論,IOS系統的嚴謹性自不用說,這篇文章總結了一些安卓卡頓的原因!
首先,根據所說的問題,我用iPad和小米Pad對比了,直觀感受上明顯感覺iOS要流暢、舒服。
在這件事情上,作為開發者的我認為主要有以下三個原因:
速度曲線。
當你滑動界面然後鬆手,這時界面會繼續滑動,然後速度減小,直到速度為0時停止。iOS下速度減小的這個過程比較慢,尤其是快要停的時候是慢慢停的,視覺上有種很順滑的感覺;Android下則從鬆手到停要快很多,相比之下有種戛然而止的感覺。
從數據/技術角度來看這個事情,我們滑動界面的最終目的不是為了「動」,而是為了「停」,因此只要平滑的到達目的地,似乎越快完成這個過程越好,所以Android的選擇是理所當然的。但事實是,大家普遍更喜歡iOS的方式,這樣做顯得更順滑、更優雅。
幀率。
絕大部分時間兩者都能保持60FPS左右的滿幀率。但都會有偶爾的掉幀。並且Android上要比iOS上嚴重很多。(好吧,比起前兩年,已經好太多了。)我前前後後滑動了幾十次,iOS在前面遇到1次掉幀,後面就很穩定了。而Android幾乎每滑動一次都會伴隨一次掉幀。這完全就是真真實實的卡頓,用戶必然會感覺到那一刻的不流暢。Android掉幀的原因我後面再詳細分析。
觸摸響應速度。
從手指碰到觸摸屏,到屏幕上顯示處理這次觸摸產生的畫面,是需要時間的。時間越短感覺越跟手。據說iOS的觸摸屏的處理時間要比一般的Android手機快,這不是我的專長,不知道怎麼驗證。但在軟體系統層面,Android的顯示機制是APP-->SurfaceFlinger-->Display,這比傳統的APP-->Display多了一步,主要基於這個原因,畫面最終輸出到屏幕要比傳統的方式慢一幀(16.7ms)。
以上是個人分析的內容,如果有不對的地方,還請大家指正。作為APP開發者,系統的問題我們無可奈何,我們只有在APP的性能上下功夫,給用戶一個好的體驗。首先我們要做的就是預防,如何有效的進行預防?如何才能實時的檢測卡頓現象的發生呢?就這一問題思考了很長時間,於是使用友盟+u-apm性能監測工具,這一工具在APP卡頓中起到哪些作用呢?
u-apm卡頓分析分析功能支持,卡頓趨勢的查找、卡頓列表的篩選、卡頓模塊的計算、卡頓分布的篩選、卡頓詳情頁面的展示,以上業務模塊u-apm平台都以圖表的形式直觀的展示了實時數據,輔助開發者進行問題篩查。
卡頓分析功能可支持Android和iOS採集,Android支持5%采樣率,iOS支持全量採集。提供卡頓趨勢分析、卡頓列表及卡頓詳情日誌、支持分系統版本、運營商、APP版本、設備等6個緯度的查看卡頓分布;我們抽象了發生卡頓問題的堆棧信息構成卡頓模塊,可通過倒序/正序聚合查看發現影響性能的最底層方法/核心原因。通過智能告警的方式推送到企業線上辦公工具或郵件能力,便於團隊內快速響應跟進問題。
總結
如今,事事都追求效率,快速,如果使用傳統的檢測方法,不僅耗費大量的時間不說,還會消耗大量的經費,u-apm的誕生,不僅能幫助開發者檢測卡頓問題,還能檢監測線上卡頓的產生,從而預防性能問題的發生。