一、FPS是什么?
FPS即Frames per Second(每秒顯示的幀數),用於測量顯示幀數的度量。幀數為0說明頁面處於靜止,只要頁面動起來,這個幀數就會有變化,然后再趨於靜止,頁面滾動起來幀數整體呈現“非對稱”拋物線走勢。接下來看一張圖直觀感受一下:

圖片來源於網絡,侵刪
通過上圖我們能看出FPS值的大小對畫面流暢度的影響,每一幀都是靜止的圖像,快速連續地顯示幀便形成了運動的假象,因此高幀率可以得到更流暢、更逼真的動畫。
二、何為幀延遲?卡頓如何造成的?
幀延遲的高低可以通過幀時間(Frame Time)來判定。我們參考顯示器的60Hz刷新率進行計算,它意味着每秒刷新60幀,每幀大約用時16.7毫秒。畫面中每幀生成時間如果與16.7毫秒很接近,那么全程畫面的幀數就很穩定,更接近理想的60幀每秒。
如果每幀生成時間高於16.7毫秒,也就意味着渲染這一場景所花費的時間比其他幀更多,造成畫面跟不上,進而帶來顯示卡頓。
舉一個簡單的例子,我們看到的早期動畫片其實就是用一張張手繪圖片連貫翻頁制作而成的。當一張張獨立圖片切換速度足夠快時,我們的眼睛就會以為這是連續的動作。反之,當圖片切換速度不夠快時,就會被人眼看出破綻,相應的視覺體驗就是卡頓。
三、如何進行應用幀率測試?
既然幀率的高低影響着用戶對應用視覺體驗的好壞,那作為開發者該如何進行應用的幀率測試?
華為終端開放實驗室選取購物、實用工具、旅游住宿、社交通訊、影音娛樂等常見分類中的TOP應用采用以下方法進行FPS測試,測試結果顯示,以下TOP應用的FPS都滿足安卓綠色聯盟幀率不小於55fps的性能標准,可見以下應用開發企業在為用戶提供流暢視覺體驗方面下足了功夫,給其他應用開發企業樹立了良好的榜樣,希望廣大開發者一道,為更好的用戶視覺體驗不斷努力!
測試環境:
硬件環境:Pixel 2 XL 4+64G
軟件版本:Android 8.0
測試次數: 5次取平均值
APP幀率測試標准: 不小於55fps
測試前提條件:手機root,adb shell手機連接正常
非游戲類應用幀率測試方案:
測試范圍:購物類應用手機淘寶、京東、唯品會、網易嚴選;
實用工具類應用QQ瀏覽器、360瀏覽器、UC瀏覽器、百度;
旅游住宿類應用途牛旅游、飛豬、攜程旅行、去哪兒旅行;
社交通訊類應用微博、MOMO陌陌、微信、QQ;
影音娛樂類應用搜狐視頻、愛奇藝、優酷、騰訊視頻;
Tips:
實用工具類應用針對“華為終端開放實驗室(https://deveco.huawei.com/)”網站首頁幀率信息進行統計;
購物、旅游住宿、社交通訊、影音娛樂類應用針對首頁(跳過登錄以及廣告頁面后的用戶首個可滑動頁面)進行幀率信息統計;
按照以下流程執行幀率信息收集和計算過程:
①頁面滑動幀率收集:

②頁面滑動幀率計算:

③非游戲類應用測試數據展示:





四、如何進行應用幀率優化?
手機的CPU處理速率、屏幕尺寸、內存及顯存的大小都影響着APP幀率的大小,這些因素在一定程度上約束着准備數據和數據傳到屏幕的時間。再者,GUI軟件架構在一定程度上也影響着應用幀率的大小。
在同等機器環境下,除去CPU、屏幕尺寸及系統GUI等固有數據傳輸耗時,要提升應用FPS就要減少視圖渲染的時間。
通過以下幾種方式可以有效提升應用FPS:
1、盡量不要在刷新時做耗時操作,例如准備數據,創建圖片,圖片變換等,數據和圖片都應該在之前就加載到內存中,圖片變換用canvas的變換來實現。
2、同一個界面中多個動畫重疊出現時,盡量將動畫的刷新過程統一刷新,避免頻繁的invalidate,尤其是多個動畫有時序上的關系時更應該統一。
3、盡量使用帶有參數的invalidate來刷新,這樣可以減少很多運算量。
歡迎有需求的小伙伴使用上述方法進行應用FPS測試,如果您有更好的解決方法與見解,歡迎在文章下方留言交流!后續我們將針對應用FPS情況進行重點分析,想了解應用FPS不同的原因么,想學習更多應用FPS優化的方法么?歡迎持續關注!
目前,華為終端開放實驗室已上線FPS測試功能,歡迎廣大應用開發者前來使用!
①登錄 DevEco 平台進入 https://deveco.huawei.com/ ,登錄賬號,選擇“測試服務-雲測試-性能測試”
②選擇機型,點擊“立即體驗”
③根據要求上傳應用 APK,獲取幀率測試結果。

如有疑問,可發送郵件至deveco@huawei.com
關注安卓綠色聯盟公眾號回復關鍵詞“申請”,了解華為終端開放實驗室免費雲測申請流程。