一、问题定位​

  1. 现象:App 界面无响应、点击 / 滑动无反馈,系统可能弹出 “应用未响应” 提示​
  1. 核心原因:主线程被阻塞(耗时操作、死锁、资源争抢等)​

二、关键工具​

  1. DevEco Studio:打开 Profiler→CPU 分析,查看主线程(main)是否有长时间占用(超过 500ms)​
  1. HiLog:过滤日志标签(如应用包名),搜索 “ANR”“Freeze” 关键词,获取问题发生时间点​
  1. FaultLog:路径/data/log/faultlog/,查看应用相关日志,提取进程号(PID)、故障类型(APP_FREEZE)​

三、排查步骤​

  1. 用 PID 在 DevEco Studio 的 CPU 分析中定位对应进程,查看阻塞时段的函数调用栈​
  1. 重点排查:主线程中的网络请求、数据库读写、复杂循环计算、锁等待(synchronized/Lock)​
  1. 验证:复现场景,若定位到的函数注释后 Freeze 消失,确认该函数为问题点​

四、分析总结​

  1. 常见问题点:主线程直接执行耗时 IO 操作、多线程锁使用不当导致死锁​
  1. 解决方向:耗时操作移至子线程(TaskDispatcher)、避免主线程锁竞争、优化复杂计算逻辑​
  1. 预防:开发时用 Profiler 实时监控 CPU,关键流程加日志,提前发现主线程阻塞风险
Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐