Article / 2026/05/31

性能优化 (三十七) 卡顿单点问题检测方案

性能优化 (三十七) 卡顿单点问题检测方案 的技术笔记。

卡顿单点问题检测方案

背景介绍

  • 自动卡顿监测方案并不够
  • 体系化解决方案务必尽早暴露问题

单点问题:主线程IPC、DB

  • IPC问题监测

  • 监测指标

  • IPC调用类型

  • 调用耗时、次数

  • 调用堆栈、发生线程

常规方案

  • IPC前后加埋点
  • 不优雅、容易忘记
  • 维护成本大

IPC问题监测技巧

  • adb命令
  • adb shell am trace-ipc start
  • adb shell am trace-ipc stop -dump-file/data/local/tmp/ipc-trace.txt
  • adb pull /data/local/tmp/ipc-trace.txt

IPC问题监测

  • 优雅方案
  1. ARTHook 还是AspectJ?
  2. ARTHook:可以Hook系统方法
  3. AspectJ:非系统方法
  4. 可以找到所有的IPC的操作
DexposedBridge.findAndHookMethod(Class.forName("android.os.BinderProxy"),"transact",
 int.class,Parcel.class,Parcel.class,int.class,new XC_MethodHook(){
   @Override
   protected void beforeHookedMethod(MethodHookParam         param){
           LogUtils.i("BinderProxybeforeHookedMethod"+param.thisObject.getClass().getSimapName+"\n"+Log.getStackTraceString(new Throwable()));
   super.beforeHookedMethod(param)
   }
 })

单点问题监测方案

  • 利用ARTHook完善线下工具

  • 开发阶段Hook相关操作,暴露、分析问题

  • 监控纬度

  1. IPC
  2. IO、DB
  3. View绘制

Giscus 未启用:请在 src/site.config.ts 中配置 repoId 与 categoryId。