Closed passionli closed 7 years ago
我也遇到了,实验了一下应该是Handler的toString和Object的toString方法导致的,可以复写这两个toString方法来避免这个问题
@2dxgujun 用Allocation和Method Tracking工具可以定位到确实是Handler.toString和Object.toString引起,这些消息都是显示帧的消息。如下:
>>>>> Dispatching to Handler (android.view.Choreographer$FrameHandler) {41ad4230} android.view.Choreographer$FrameDisplayEventReceiver@41ad4258: 0
<<<<< Finished to Handler (android.view.Choreographer$FrameHandler) {41ad4230} android.view.Choreographer$FrameDisplayEventReceiver@41ad4258
这两个对象是底层创建的,你说的override他们的toString方法是通过反射? Choreographer中Handler是final修饰着的,想了下动态代理也不行
private final FrameHandler mHandler;
请问下,你说的是指override他们吗?还是自己的Handler?
@passionli 我是自己的Handler,自己的Thread,自己的事件
好像跟我没什么关系?。。。 @passionli
这个跟BlockCanary无关,是Looper内部组装log数据导致的。
Setup BlockCanary, and from the AS memory monitor I see that memory was allocated and fire GC. The problem is that in the Loop.loop() printer append string to print log.
So, I have no idea whether this will cause performance issue.