传送门

专项:Android 内存泄露实践分析

为什么要优化

获取 leakcanary

修改 leakcanary

actionButton.setOnClickListener(new View.OnClickListener() {
          @Override public void onClick(View v) {
//            deleteVisibleLeak();
            Toast.makeText(DisplayLeakActivity.this, "Operating rejected!", Toast.LENGTH_SHORT).show();
          }
        });

actionButton.setOnClickListener(new View.OnClickListener() {
          @Override public void onClick(View v) {
//            deleteAllLeaks();
            Toast.makeText(DisplayLeakActivity.this, "Operating rejected!", Toast.LENGTH_SHORT).show();
          }
        });

编译 leakcanary

配置 leakcanary

compile(name: 'leakcanary-android-debug', ext: 'aar')
    compile(name: 'leakcanary-analyzer-debug', ext: 'aar')
    compile(name: 'leakcanary-watcher-debug', ext: 'aar')
    compile 'com.squareup.haha:haha:2.0.3'

运行 leakcanary

伸手党

百度云盘

20160930 最新解决方案,强烈推荐

只需改动一处,上面的修改太麻烦

refWatcher = LeakCanary.install(this);
LeakCanaryInternals.setEnabled(this, DisplayLeakActivity.class, false);

泄露信息需要手动配置上传服务器,或者从 sd 卡拉回来


↙↙↙阅读原文可查看相关链接,并与作者交流