一、LeakCanary开源框架是检测内存泄露的开源类库,能自动侦测 activity 的内存泄露。在 debug build 中,如果检测到某个 activity 有内存泄露,LeakCanary 就是自动地显示一个通知。
链接:LeakCanar的Github下载地址
二、步骤:
1.在 build.gradle 中加入引用,不同的编译使用不同的引用:
dependencies {
...
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3'
...
}
2.自定义Application类,并且应用该自定义Appliacation。
创建MyApplication类:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
LeakCanary.install(this);
}
}
在AndroidManifest.xml中添加:
<application
...
android:name=".MyApplication"
...
</application>
3.创建一个内存泄露例子,这里使用静态内部变量进行测试:
public class MainActivity extends AppCompatActivity {
private static Context mcontext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mcontext=this;
//拥有MainActivity的引用,而mcontext的生命周期与Application一样,因而无法销毁MainActivity
}
}
4.结果截图:
检测的时间有点久,需要等几分钟,所以请耐心,本人就是以为马上有结果,就怀疑自己代码打错了吗?额。。。。。
检测完成后,通知栏会提示。点击后如下:
三、还有其他用法,落实到具体变量,请参考以下文章:
LeakCanary中文教程(官网的翻译)
LeakCanary: 让内存泄露无所遁形