【鸿蒙开发进阶】第19篇:性能与调试:Profiler、HiLog 与卡顿排查三板斧
·
📚 鸿蒙进阶专栏 · 第 19 篇 / 共 20 篇(进阶篇 11-20)
上一篇:权限管理 | 下一篇:工程化实战:多环境、包体积与上线检查清单
目录
性能与调试: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」页直接抄,改改数据类型即可。
六、下一篇预告
代码质量守住了,最后一关是工程与上线:多环境切换、包体积、监控灰度。完结篇见。
进阶系列持续更新中,点赞 + 收藏 + 关注不迷路。
遇到问题评论区贴报错信息 + 关键代码,看到都会回。也欢迎留言点播你想看的进阶主题。
更多推荐



所有评论(0)