霹雳三口组

  博客园 :: 首页 :: 新随笔 :: :: :: 管理 ::

LeakCanary项目地址:LeakCanary

使用步骤:

1、添加引用:

 dependencies {
        debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
        releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
        testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
    }

2、在程序主入口Application中添加一下代码初始化LeakCanary 

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        LeakCanary.install(this);
    }
}

3、编写一个引起内存泄漏的代码,测试代码中,在activity的oncreate()方法中开启了一个匿名内部类的线程,该匿名内部类会持有TestHeapActivity的对象引用

  启动该界面

  

public class TestHeapActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test_heap);
        new Thread(new Runnable() {

            @Override
            public void run() {
                while (true) {
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();
    }
}

4、设置模拟器横竖屏切换,则该activity会多次启动与销毁,因此内存中会存在多个该activity的引用

5、多次执行步骤4,此时会出现内存泄漏情况,LeakCanary会检测到内存泄漏,并向通知栏发送一条通知,下拉状态栏打开通知界面,如下图:

 

posted on 2017-03-22 14:34  霹雳三口组  阅读(308)  评论(0)    收藏  举报