文章目錄
- 一、前言
- 二、頁面卡頓的排查方式
- 1、耗時操作的監控
- 2、頁面卡頓的監控
- 三、參考鏈接
一、前言
程序的優化在做過線上bug處理,布局層級優化,項目依賴庫版本更新,重復庫合并,刪除未使用的資源,刪除冗余的庫,避免因為一個類而引入一個庫的問題,leakcanary
(參考鏈接:https://square.github.io/leakcanary/)內存檢測處理,lint
(參考鏈接:https://developer.android.google.cn/studio/write/lint?hl=zh-cn)靜態代碼檢測后。如果想要繼續優化,那么就需要使用其他工具了。比如開啟嚴格模式StrictMode,該模式會將相關異常信息輸出到控制臺或者彈出對話框。亦或者使用Profiler等工具進行進行檢測(需要注意的是Profiler只能解決一部分問題,不能解決所有問題)
需要注意的是本篇文章采用了Android Studio新版的UI進行操作,具體開啟方式為Preferences->Appearance & Behavior ->New UI 。然后勾選Enable new UI并重啟Android Studio。開發工具版本為
Android Studio Giraffe | 2022.3.1 Patch 4
Build #AI-223.8836.35.2231.11090377, built on November 14, 2023
Runtime version: 17.0.6+0-17.0.6b829.9-10027231 aarch64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
目前為最新版本開發工具。
測試工具為紅米K60,版本為Android13
據官方文檔所說Profiler的工具監控UI在Android11、12、13上面的UI有不同的結果,這里需要注意版本不同帶來的問題
二、頁面卡頓的排查方式
1、耗時操作的監控
可以選擇采取以下方式啟動應用
或者常規方式啟動后使用以下方式打開監控工具
打開后選擇CPU欄目打開
然后選擇Java/Kotlin Method Sample (legacy)
進行記錄。Java/Kotlin Method Trace
在測試時候記錄的數據無法打開,所以沒辦法進行測試,后續可以打開的時候再進行嘗試。需要注意的是對數據記錄時間不能過長,否則會導致文件過大無法打開。所以只對關鍵操作進行記錄分析即可。記錄完后點擊Stop
進行完成分析
記錄完成后會自動打開,效果如下
選擇左側main
選項卡進行確定然后查看Flame Chart
。結果如下
其中右側火焰圖的綠色格子的內容是開發者可以嘗試修改的地方。調用順序從上往下為,應用函數到系統函數的調用順序,鼠標光標懸停在某個方格上面可以看到該函數調用時長。然后開發者可以根據此進行相關代碼修改。當然即使如此能修改的綠色格子也不足十分之一。
2、頁面卡頓的監控
這里選擇System Trace
進行記錄
記錄完后的頁面如下
然后選擇All Frames
->Janky Frames
。
可以通過點擊Frame Duration
進行選擇排序,查看耗時最長的Frame的ID,如果該選項卡下面沒有內容,表示應用沒有頁面卡頓。根據此幀在左側Janky Frames
的選項卡中進行查找該幀。
鎖定后按動鍵盤上的M
鍵放大或者屏幕右上角的放大縮小按鈕放大縮小。
然后可查看具體幀的渲染時間,當然不是所有幀都能提供有效信息,那么就只能針對可以修改的地方進行修改
Profiler
本文只記錄部分用法,其余用法需查看官網或自己研究
三、參考鏈接
- 應用性能指南
- 使用布局檢查器和布局驗證工具調試布局
- StrictMode
- 功耗優化 · 方案篇 · Android功耗優化指導規范