不同于LeakCanary,在Matrix中,主要是通过Resource Canary来监控内存泄漏问题的,且监听的泄漏对象只支持Activity,官方说明如下:
结合分析LeakCanary的经验可知,要实现Activity内存泄漏监听,总体上应该要实现两大功能:
- Activity生命周期监控
- 查找泄漏对象并得到GC Root Path
Activity生命周期监控
从Activity生命周期监控实现方案可知,我们可以通过Application.registerActivityLifecycleCallbacks来实现Activity生命周期监控,那么Matrix中又是怎么实现的呢?
在Matrix中Resource Canary的实现类是ResourcePlugin,Matrix装载所有的plugin对象并通过调用startAllPlugins启动,startAllPlugins最终调用的是各个plugin的start方法,实现如下: