LeakCanary是一个内存泄漏检测库,它可以在内存泄漏时发出通知并且打印出内存泄漏的调用堆栈
哪些情况会造成内存泄漏?
- 错误使用单例造成的内存泄漏
- Handler造成的内存泄漏
- 线程造成的内存泄漏
- 非静态内部类创建静态实例造成的内存泄漏
- 资源未关闭造成的内存泄漏
这个库使用起来也比较简单
添加依赖:
dependencies {
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'}
MyApplication类中
private static RefWatcher refWatcher;
@Override
public void onCreate() {
super.onCreate();
refWatcher = setupLeakCanary();
}
private RefWatcher setupLeakCanary() {
return LeakCanary.isInAnalyzerProcess(this) ? RefWatcher.DISABLED : LeakCanary.install(this);
}
public static RefWatcher getRefWatcher(){
return refWatcher;
}
基类Activity/Fragment中的使用
override fun onDestroy() {
super.onDestroy()
MyApplication.getRefWatcher().watch(this)
}