性能優化中使用Profiler進行頁面卡頓的排查及解決方式

文章目錄

  • 一、前言
  • 二、頁面卡頓的排查方式
    • 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本文只記錄部分用法,其余用法需查看官網或自己研究

三、參考鏈接

  1. 應用性能指南
  2. 使用布局檢查器和布局驗證工具調試布局
  3. StrictMode
  4. 功耗優化 · 方案篇 · Android功耗優化指導規范

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166224.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166224.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166224.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

機器學習【01】相關環境的安裝

學習實例 參考資料:聯邦學習實戰{楊強}https://book.douban.com/subject/35436587/ 項目地址:https://github.com/FederatedAI/Practicing-Federated-Learning/tree/main/chapter03_Python_image_classification 一、環境準備 GPU安裝CUDA、cuDNN pytho…

ComboGrid中快捷鍵Enter使用

為了實現當前元素,回車時有值跳轉到下一個元素,無值則查詢。 定義元素時使用快捷鍵 $.fn.combogrid.defaults.keyHandler.up.call(this);調用combogrid默認的快捷鍵 $(#cs).combogrid({width: 360,placeholder: 測試...,panelWidth: 1000,qParams: {pJ…

letcode::數組中的第k個最大元素

數組中的第k個最大元素 給定整數數組 nums 和整數 k,請返回數組中第 k 個最大的元素。 請注意,你需要找的是數組排序后的第 k 個最大的元素,而不是第 k 個不同的元素。 你必須設計并實現時間復雜度為 O(n) 的算法解決此問題。 示例 1: 輸入: …

PHP 語法||PHP 變量

PHP 腳本在服務器上執行&#xff0c;然后將純 HTML 結果發送回瀏覽器。 基本的 PHP 語法 PHP 腳本可以放在文檔中的任何位置。 PHP 腳本以 <?php 開始&#xff0c;以 ?> 結束&#xff1a; <?php // PHP 代碼 ?> 值得一提的是&#xff0c;通過設定php.ini的相…

nvm-切換node版本工具安裝-方便好用

去官網下載&#xff1a; https://github.com/coreybutler/nvm-windows#installation--upgrades 網站進去后點擊下載&#xff0c;點擊那個exe文件就下載本地&#xff0c;然后雙擊安裝 安裝nvm 就直接按照窗口提示的下一步就行&#xff0c;如果改了某些地方會不成功&#xf…

數字孿生技術:提升UI交互性與個性化設計

隨著數字化時代的到來&#xff0c;數字孿生技術正在逐漸改變我們的生活和工作方式。數字孿生是一種復制現實世界系統或實體的技術&#xff0c;通過創建數字模型來模擬現實世界中的各種行為和事件。這種技術不僅為人們提供了一個全新的視角來看待和解決問題&#xff0c;同時也為…

內衣專用洗衣機怎么樣?口碑最好的小型洗衣機

隨著人們的生活水平的提升&#xff0c;越來越多小伙伴來開始追求更高的生活水平&#xff0c;一些智能化的小家電就被發明出來&#xff0c;而且內衣洗衣機是其中一個。現在通過內衣褲感染到細菌真的是越來越多&#xff0c;所以我們對內衣褲的清洗頻次會高于普通衣服&#xff0c;…

Spring Boot 3.2發布:大量Java 21的支持上線,改進可觀測性

就在今天凌晨&#xff0c;Spring Boot 3.2正式發布了&#xff01;該版本是在Java 21正式發布之后的重要支持版本&#xff0c;所以在該版本中包含大量對Java 21支持的優化。 下面&#xff0c;我們分別通過Spring官方發布的博文和Josh Long長達80分鐘的介紹視頻&#xff0c;一起…

飛翔的鳥游戲

一.準備工作 首先創建一個新的Java項目命名為“飛翔的鳥”&#xff0c;并在src中創建一個包命名為“com.qiku.bird"&#xff0c;在這個包內分別創建4個類命名為“Bird”、“BirdGame”、“Column”、“Ground”&#xff0c;并向需要的圖片素材導入到包內。 二.代碼呈現 pa…

【醫學圖像處理】超詳細!PET圖像批量預處理

目錄 一、單個PET圖像預處理1、使用[MRIConvert](https://pan.baidu.com/s/1cn3kgeVRir8HvP6HHm0M0Q?pwd5rt5)處理DCM2、MRI和PET數據預處理過程1&#xff09; 打開matlab命令行輸入spm pet&#xff0c;打開SMP12&#xff0c;界面如下2&#xff09; Realign&#xff0c;只需要…

【Vue】插值表達式

作用&#xff1a;利用表達式進行插值渲染 語法&#xff1a;{ { 表達式 } } 目錄 案例一&#xff1a; 案例二&#xff1a; 案例三&#xff1a; ?編輯 注意&#xff1a; 案例一&#xff1a; <!DOCTYPE html> <html lang"en"> <head><me…

項目中如何配置數據可視化展現

在現今數據驅動的時代&#xff0c;可視化已逐漸成為數據分析的主要途徑&#xff0c;可視化大屏的廣泛使用便應運而生。很多公司及政務機構&#xff0c;常利用大屏的手段展現其實力或演示業務&#xff0c;可視化的效果能讓觀者更快速的理解結果并直觀的看到數據展現。因此&#…

加速軟件開發:自動化測試在持續集成中的重要作用!

持續集成的自動化測試 如今互聯網軟件的開發、測試和發布&#xff0c;已經形成了一套非常標準的流程&#xff0c;最重要的組成部分就是持續集成&#xff08;Continuous integration&#xff0c;簡稱CI&#xff0c;目前主要的持續集成系統是Jenkins&#xff09;。 那么什么是持…

教育+AIGC開局之年:教育派作業幫、科技派科大訊飛同路不同道

配圖來自Canva可畫 與往年相比&#xff0c;今年的雙11顯得格外冷清&#xff0c;GMV&#xff08;商品交易總額&#xff09;數據和增長數據無人提及&#xff0c;京東、淘寶天貓、抖音、快手等平臺的火藥味都淡了。一片祥和有序的雙11氛圍中&#xff0c;昔日的K12教育企業與科技企…

sqlserver寫入中文亂碼問題

sqlserver寫入中文亂碼問題解決方案 首先查看sqlserver數據庫編碼 首先查看sqlserver數據庫編碼 查詢語句&#xff1a;SELECT COLLATIONPROPERTY(Chinese_PRC_Stroke_CI_AI_KS_WS, CodePage)&#xff1b; 對應的編碼&#xff1a; 936 簡體中文GBK 950 繁體中文BIG5 437 美國/加…

算法的10大排序

10大排序算法--python 一顆星--選擇排序一顆星--冒泡排序一顆星--插入排序兩顆星--歸并排序&#xff08;遞歸-難&#xff09;三顆星--桶排序三顆星--計數排序四顆星--基數排序四顆星--快速排序&#xff0c;尋找標志位&#xff08;遞歸-難&#xff09;四顆星--又是比較難的希爾排…

Python工具箱系列(四十六)

PDF&#xff08;Portable Document Format&#xff09;是一種便攜文檔格式&#xff0c;它基于PostScripty這種腳本語言。 ?? PDF文檔操作 PDF&#xff08;Portable Document Format&#xff09;是一種便攜文檔格式&#xff0c;它基于PostScripty這種腳本語言&#xff0c;它…

清華大學提出全新加速訓練大模型方法SoT

近日&#xff0c;微軟研究和清華大學的研究人員共同提出了一種名為“Skeleton-of-Thought&#xff08;SoT&#xff09;”的全新人工智能方法&#xff0c;旨在解決大型語言模型(LLMs)生成速度較慢的問題。 盡管像GPT-4和LLaMA等LLMs在技術領域產生了深遠影響&#xff0c;但其處…

提供電商數據|帶你簡單認識天貓API接口相關參數文檔調用說明

什么是API接口 API接口(Application Programming Interface Interface)是應用程序與開發人員或其他程序互相通信的方式。它允許開發者訪問應用程序的數據和功能。 API接口,軟件的“握手”與“交流”之道,軟件世界的“好基友”。想讓軟件聊得來?想開發App卻無從下手?API來相救…