📚 鸿蒙进阶专栏 · 第 19 篇 / 共 20 篇(进阶篇 11-20)
上一篇:权限管理 | 下一篇:工程化实战:多环境、包体积与上线检查清单

目录

性能与调试:Profiler、HiLog 与卡顿排查三板斧

一、HiLog:结构化打日志

二、断点调试

三、Profiler:看帧率和内存

四、卡顿排查标准流程

五、性能问题速查表

六、下一篇预告


 

性能与调试:Profiler、HiLog 与卡顿排查三板斧

「我手机上不卡,用户说卡」——没掌握工具就永远靠猜。这篇给你三件定位武器,让性能问题可量化、可复现、可修复。

一、HiLog:结构化打日志

import { hilog } from '@kit.PerformanceAnalysisKit'

const DOMAIN = 0x0001
const TAG = 'NoteApp'

hilog.info(DOMAIN, TAG, '加载数量: %{public}d', this.list.length)
hilog.error(DOMAIN, TAG, '请求失败: %{public}s', JSON.stringify(err))

// DevEco 底部 Log 窗口,用 TAG 过滤,只看自己的日志
⚠️ %{public} 和 %{private} 有讲究:private 会在日志里打码(正式包保护隐私),调试时想看到明文必须写 public,别怪日志是 。

二、断点调试

代码行号右侧单击出现红点 → 点 🐞 以 Debug 模式运行 → 命中断点后可查看变量、单步执行(F8)、步入函数(F7)。比打日志快十倍。

三、Profiler:看帧率和内存

运行状态下 DevEco 底部打开 Profiler → Time / CPU / Memory:

工具页看什么典型发现
Time各函数耗时build 里调用了重函数
CPU主线程占用主线程跑了大计算
Memory内存曲线来回切页面内存只涨不跌 → 泄漏

四、卡顿排查标准流程

1. 复现:找到必现操作路径(复现不了就录屏,让用户给路径)
2. 量化:Profiler Time 看掉帧发生在哪个函数
3. 修复:按类型下药(见下表)
4. 验证:修复前后帧率截图对比

五、性能问题速查表

症状根因药方
列表滑动掉帧没懒加载 / item 布局太深LazyForEach + 扁平化布局
冷启动慢onCreate 做重活延迟初始化非必需服务
切页面内存暴涨图片未压缩 / 定时器没清objectFit 裁剪 + aboutToDisappear 清理
页面切换卡顿aboutToAppear 同步请求改 async + 骨架屏
📌 LazyForEach 需要配合 IDataSource 实现数据源监听,代码模板可在官方文档「LazyForEach」页直接抄,改改数据类型即可。

六、下一篇预告

代码质量守住了,最后一关是工程与上线:多环境切换、包体积、监控灰度。完结篇见。


进阶系列持续更新中,点赞 + 收藏 + 关注不迷路。
遇到问题评论区贴报错信息 + 关键代码,看到都会回。也欢迎留言点播你想看的进阶主题。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐