性能优化中使用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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/213570.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

给sprite上增加刷光动效

游戏引擎 —— cocos creator 3.52 此动效给动态修改尺寸的图片增加一层刷光的效果,直接贴代码 CCEffect %{techniques:- passes:- vert: sprite-vs:vertfrag: sprite-fs:fragdepthStencilState:depthTest: falsedepthWrite: falseblendState:targets:- blend: tr…

hive return code 40000 from org.apache.hadoop.hive.ql.exec.MoveTask解决思路

参考学习 https://github.com/apache/hive/blob/2b57dd27ad61e552f93817ac69313066af6562d9/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java#L47 为啥学习error code 开发过程中遇到以下错误,大家觉得应该怎么办?从哪方面入手呢? 1.百…

Zynq-7000系列FPGA使用 Video Processing Subsystem 实现图像缩放,提供工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐FPGA图像处理方案FPGA图像缩放方案自己写的HLS图像缩放方案 3、设计思路详解Video Processing Subsystem 介绍 4、工程代码详解PL 端 FPGA 逻辑设计PS 端 SDK 软件设计 5、工程移植说明vivado版本不一致处理FPGA型号不一致处理其他注意事项…

时间敏感网络TSN的车载设计实践: 802.1Qbv协议

▎概述 IEEE 802.1Qbv[1]是TSN系列协议中备受关注的技术之一,如图1所示,它定义了一种时间感知整形器(Time Aware Shaper,TAS),支持Qbv协议的交换机可以按照配置好的门控列表来打开/关闭交换机出口队列&…

【Web】NewStarCtf Week2 个人复现

目录 ①游戏高手 ②include 0。0 ③ez_sql ④Unserialize? ⑤Upload again! ⑥ R!!C!!E!! ①游戏高手 经典前端js小游戏 检索与分数相关的变量 控制台直接修改分数拿到flag ②include 0。0 禁了base64和rot13 尝试过包含/var/log/apache/access.log,ph…

如何进行MySQL的主从复制(MySQL5.7)

背景:在一些Web服务器开发中,系统用户在进行数据访问时,基本都是直接操作数据库MySQL进行访问,而这种情况下,若只有一台MySQL服务器,可能会存在如下问题 数据的读和写的所有压力都会由一台数据库独…

合封芯片未来趋势如何?合封优势能否体现?

芯片已经成为现代电子设备的核心组件。为了提高系统的性能、稳定性和功耗效率,一种先进的芯片封装技术——合封芯片应运而生。 合封芯片作为一种先进的芯片封装技术,合封芯片是一种将多个芯片(多样选择)或不同的功能的电子元器件…

输入4个整数,找出其中最大的数。用函数的嵌套调用来处理

目录 1解题思路: 2运行代码: 3运行结果: 4总结: 函数 定义函数 实例 函数声明 调用函数 实例 函数参数 1解题思路: 这个问题并不复杂,完全可以利用一个主函数就可以得到结果。现在根据题目要求,用函数的嵌套调用来处理。…

“关爱零距离.情暖老人心”主题活动

为提高社区老年人的生活质量,促进邻里间的互动与友谊,以及弘扬尊老爱幼的社区精神,11月21日山东省潍坊市金阳公益服务中心、重庆市潼南区同悦社会工作服务中心在潼南区桂林街道东风社区共同在潼南区桂林街道东风社区举办了“关爱零距离.情暖老…

Xilinx Zynq-7000系列FPGA实现视频拼接显示,提供两套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐FPGA图像处理方案FPGA视频拼接叠加融合方案推荐 3、设计思路详解Video Mixer介绍 4、工程代码1:2路视频拼接 HDMI 输出PL 端 FPGA 逻辑设计PS 端 SDK 软件设计 5、工程代码2:4路视频拼接 HDMI 输出PL 端 FPGA 逻辑设…

8.HTML中表单标签

8. 表单标签 8.1 为什么需要表单 使用表单的目的是为了收集用户信息, 在我们网页中,我们也需要跟用户进行交互,收集用户资料,此时就需要表单 8.2 表单的组成 在HTML中,一个完整的表单通常由表单域,表单控件…

Linux下安装python3步骤:

1.下载Python3源码 你需要从Python官网下载Python3的源码包。本文以Python 3.9.9为例。你可以使用wget命令来下载源码包到你的Linux主目录中: wget https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tgz2.编译和安装Python3 下载好源码包后,你需要解压它&…