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问题监测
- 优雅方案
- ARTHook 还是AspectJ?
- ARTHook:可以Hook系统方法
- AspectJ:非系统方法
- 可以找到所有的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相关操作,暴露、分析问题
-
监控纬度
- IPC
- IO、DB
- View绘制
Giscus 未启用:请在
src/site.config.ts中配置 repoId 与 categoryId。