我们把这份 Trace 上的 cpu 部分全选,然后下面按照 Wall Duration 排序,可以发现网易新闻后台动画执行时间最长。应用已经在后台且不可见的时候,还在这么频繁地工作,占用 CPU 资源,消耗电量,实在是不应该。
抓对应的 MethodTrace 来看,就是在做动画,没有进行关闭 ,动画依旧在每一帧进行 onAnimationUpdate 的回调 ,可以看到这里是因为使用了 Airbnb 的 [Lottie](() 库导致的,动画没有关闭,所以还是一直在做触发
[](()实例 - QQ音乐
启动 QQ 音乐,然后回到桌面, 左右滑动桌面并抓取 Systrace 和 MethodTrace ,可以看到跟上面的网易新闻的表现一致
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eaXZrTK6-1599053611649)(https://upload-images.jianshu.io/upload_images/24099992-503389e0f643a07a.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
抓取了 QQ 音乐的后台动画时候的 MethodTrace 发现,也是由于退到后台之后,没有暂停动画导致的,也是 Airbnb 的 [Lottie](() 的锅, 而且 QQ