美文网首页
LeakCanary的简单使用

LeakCanary的简单使用

作者: Frank_Kivi | 来源:发表于2018-08-23 09:39 被阅读316次

    Android开发中一个不可绕过的东西——内存泄漏。如果确认在某个页面发生了内存泄漏,可以dump内存,使用工具来分析,有兴趣的同学可以参阅 Android内存优化方法——以Handler内存泄漏为例。但是问题难在如何第一个发现内存泄漏,这里推荐一个强大的工具:leakcanary.
    按照官方的说明,只需要简单的两步:

    1. In your build.gradle:
    dependencies {
      debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.1'
      releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.1'
      // Optional, if you use support library fragments:
      debugImplementation 'com.squareup.leakcanary:leakcanary-support-fragment:1.6.1'
    }
    
    1. In your Application class:
    public class ExampleApplication extends Application {
    
      @Override public void onCreate() {
        super.onCreate();
        if (LeakCanary.isInAnalyzerProcess(this)) {
          // This process is dedicated to LeakCanary for heap analysis.
          // You should not init your app in this process.
          return;
        }
        LeakCanary.install(this);
        // Normal app init code...
      }
    }
    

    然后我们写一段代码简单模拟一下。

    package com.example.lenovo.testjson;
    
    import android.content.Intent;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    import android.view.MotionEvent;
    
    public class MainActivity extends AppCompatActivity {
        private static final String TAG = "MainActivity";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Test.getInstance().setContext(this);//把对象作为参数传递给单例,让单例持有当前对象的引用 。
            startActivity(new Intent(this, Main2Activity.class));
            finish();
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            Log.i(TAG, "onTouchEvent: " + event.getAction());
            return super.onTouchEvent(event);
        }
    }
    
    

    这段代码之后就会在通知栏中弹出leakCanary的内存泄漏警告。
    当然,这只是最简单的使用方式。如果想要更深入的了解,请参阅官方文档。

    相关文章

      网友评论

          本文标题:LeakCanary的简单使用

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