很早之前看过matrix,但当时没有输出,当时侧重的是流程,较少关注背后的知识点。导致现在对这个框架印象不深,说不出什么东西来。现在准备带着问题重新看下这个框架,再次学习下。
另外做性能优化,需要较强的理论知识作为背景。只有懂得来理论,看代码的时候才会更清楚为什么要这样做。极力推荐极客时间的Android开发高手课.
Q&A
1 如何判断是否处于前台,以及前台的activity名
通过实现ActivityLifecycleCallbacks获取activity开始和结束的时机,维持一个变量
visibleScene用来标记当前的activity名,有activity启动这个时候去更新。收到onActivityStopped,
通过反射获取currentActivityThread的mActivities,遍历这个列表查找为paused的activity,
如果为空,则表示处于后台。否则处于前台。
2 如何判断activity是否发生了泄漏?
我们可以通过创建一个持有已销毁的Activity的WeakReference,然后主动触发一次
GC,如果这个Activity能被回收,则持有它的WeakReference会被置空,
且这个被回收的Activity一段时间后会被加入事先注册到WeakReference的
一个队列里。这样我们就能间接知道某个被销毁的Activity能否被回收了。
3 帧率检测方案?以及缺点
考文献
感谢微信的开源和先行者的无私分享
matix官方介绍
Matrix系列文章(一) 卡顿分析工具之Trace Canary
(4.2.49)微信APM:Matrix源码浅析
深入了解APM讲义V3
网友评论