异常类型:bug matrix版本: 0.5.1 gradle版本: 3.0.1 问题描述:LoopMonitor对于内存的印象 因为LoopMonitor在监听的时候会加入一个printer进行日志的输出 Looper.getMainLooper().setMessageLogging(printer = new Printer() { @Override public void println(String x) { ... } }); 所以一旦有多个message快速进入的时候会存在内存不停增加的问题 <img width="1200" alt="profile" src="https://user-images.githubusercontent.com/11855760/56470483-31277280-6479-11e9-8572-e5344ef6637f.png">
Activity
changelcai commentedon Apr 21, 2019
是的,之前测试过上面的代码,确实会存在内存抖动的情况,比较极端,主要还是因为这里有个字符串拼装。
暂时没有想到更完美的方案。有什么好的建议吗
lijiankun24 commentedon May 19, 2019
TraceCanary 是使用 Looper.getMainLooper().setMessageLogging() 的方式实现卡顿帧率检测的吧?为什么我看有的地方说是使用 Choreographer 的方式实现的呢?是版本差异吗
changelcai commentedon May 20, 2019
老版本是用Choreographer,现在是依赖Looper.getMainLooper().setMessageLogging()
lijiankun24 commentedon May 21, 2019
@changelcai 这种差异的原因是?
sailor1861 commentedon Jun 3, 2019
@changelcai 能否解释下,为啥改用Looper.getMainLooper().setMessageLogging()方案; 有啥考虑呢?
chinacuizichao commentedon Nov 12, 2019
@changelcai 能否解释下,为啥改用Looper.getMainLooper().setMessageLogging()方案; 有啥考虑呢?
buyi commentedon May 28, 2020
@changelcai 能否解释下,为啥改用Looper.getMainLooper().setMessageLogging()方案; 有啥考虑呢?
aishang5wpj commentedon Dec 21, 2020
一直没人回答,小白盲猜一下,可能有几点原因: