Java基础Android开发经验谈Android开发

LeakCanary 基本使用及源码解析

2017-11-24  本文已影响93人  落魄的安卓开发

之前被问过几次LeakCanary的工作原理,今天追踪代码了解一番,并进行记录方便以后查看。如有错误,还请指出来。谢谢

基本使用

  1. 在build.gradle中:

     dependencies {
       debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3'
       releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3'
     }
    
  2. 在Application中:

     private RefWatcher refWatcher;
    
     @Override
     public void onCreate() {
         super.onCreate();
         //LeakCanary 检测内存泄漏
         refWatcher = LeakCanary.install(this);
     }
    

    到这里,它就可以监控我们的Activity是否出现了内存泄漏问题了。

     public static RefWatcher getRefWatcher(Context context) {
         App application = (App) context.getApplicationContext();
         return application.refWatcher;
     }
    

    如果我们想监控某个对象是否能够造成内存泄漏就如下监控Fragment:

     @Override
     public void onDestroy() {
         super.onDestroy();
         RefWatcher refWatcher = App.initAppInstance().getRefWatcher();
         refWatcher.watch(this,getClass().getSimpleName());
     }
    

    监控Bitmap

     RefWatcher refWatcher = App.initAppInstance().getRefWatcher();
     refWatcher.watch(bitmap);
    

中文文档走你

检测Activity泄漏、watch()源码流程分析

到这里整体流程就OK了,具体的那个将dumpheap保存下来没有写。

上一篇 下一篇

猜你喜欢

热点阅读