美文网首页
Android内存泄漏检测工具---LeakCanary

Android内存泄漏检测工具---LeakCanary

作者: PlutoWnn | 来源:发表于2018-01-26 16:50 被阅读21次

    前言:在Android开发中我们总是遇到这种那种的内存泄漏的问题,基于这种问题我们可以用Android内存泄漏工具Leak Canary工具来检测。

    一:首先我们需要在主项目的build.gradle里面配置依赖:

    代码示例:

    debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3'
    releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3'
    

    二:在application里面初始化配置

    代码示例如下:

    private static RefWatcher mRefWatcher;
    
    @Override
    public void onCreate() {
        super.onCreate();
        mRefWatcher = LeakCanary.install(this);
    }
    
    public static RefWatcher getRefWatcher() {
        return mRefWatcher;
    }
    

    三:最后在AndroidManifest里面配置:

    把我们刚才定义的application应用在AndroidManifest里面:
    代码如下:

    android:name=".ExampleApplation"

    四:最后我们测试吧

    新建两个Activity一个MainActivity和一个LeakActivity,在MainActivity里面新建一个点击事件跳转到LeakActivity,在LeakActivity里面我们存入一个不能释放的activity。

    MainActivity里面代码如下:

        findViewById(R.id.bt).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, LeakActivity.class);
                startActivity(intent);
            }
        });
    

    也就是一个跳转事件。

    LeakActivity里面代码如下:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_leak);
        ActivityMgr.getInstance().addActivity(this);
    }
    

    ActivityMgr是一个单利,存储一个activity并不释放。

    代码示例如下:

    private static ActivityMgr sInstance = new ActivityMgr();
    List<Activity> mActivities = new ArrayList<>();
    
    private ActivityMgr() {
    }
    
    public static ActivityMgr getInstance() {
        return sInstance;
    }
    
    public void addActivity(Activity activity) {
        mActivities.add(activity);
    }
    
    public void removeActivity(Activity activity) {
        mActivities.remove(activity);
    }
    

    最后我们运行程序,点击button跳转到LeakActivity,然后再返回MainActivity.这是过个几秒钟就会出现页面leak的通知,然后我们点击通知就会跳到详情的页面:
    页面示例图如下:

    Screenshot_2018-01-26-16-12-49-134_com.example.administrator.leakcanarydemo.png

    到此此控件的介绍结束了。

    相关文章

      网友评论

          本文标题:Android内存泄漏检测工具---LeakCanary

          本文链接:https://www.haomeiwen.com/subject/ejdwaxtx.html