matrix icon indicating copy to clipboard operation
matrix copied to clipboard

trace-canary UIThreadMonitor class add support to android api level 23+(android 6.0+)

Open huchao opened this issue 3 years ago • 3 comments

在vsync到来时,UIThreadMonitor仅支持CALLBACK_INPUT = 0,CALLBACK_ANIMATION = 1,CALLBACK_TRAVERSAL = 2这三种类型,而从Android 6.0开始,就新增了类型CALLBACK_COMMIT = 3,在Android 10.0开始,又新增了CALLBACK_INSETS_ANIMATION。 本PR在UIThreadMonitor中对当前所有Android系统做出兼容处理,使得UIThreadMonitor中的数据与Choreographer保持一致。

huchao avatar Feb 10 '22 09:02 huchao

谢谢你的PR,不过在高版本的Android上,相关的多处反射都受到了系统限制,并且高本版Android(API>=24)已经提供了Window.OnFrameMetricsAvailableListener接口,可以很方便的获取帧率相关的数据,后续反射的方案不再维护了。

yeleaveszi avatar Feb 10 '22 09:02 yeleaveszi

Window.OnFrameMetricsAvailableListener在trace canary中被封装成FrameTracer了,可以监控掉帧等内容,但我这边主要觉得EvilMethod监控比较有用,在分析日志时发现inputCost, animationCost, traversalCost对应不上,于是最终系统源码发现了问题所在。

huchao avatar Feb 10 '22 13:02 huchao

作者大大能看看我提的pr支持一下ksp不~

DenkoWu avatar Feb 18 '22 06:02 DenkoWu