zoukankan      html  css  js  c++  java
  • 安卓 内存泄漏检测工具 LeakCanary 使用

    韩梦飞沙 yue31313 韩亚飞 han_meng_fei_sha 313134555@qq.com

    配置 
    build.gradle

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


    使用说明

    1. 建立RefWatcher全局变量

    2. 使用RefWatcher去监控引用,Activity,Fragment等中的内存泄漏



    例子

    第一步:定义RefWathcher全局变量

    package com.app.client;
    
    import android.app.Application;
    import android.content.Context;
    
    import com.squareup.leakcanary.LeakCanary;
    import com.squareup.leakcanary.RefWatcher;
    
    
    public class MyApplication extends Application {
    
        public static RefWatcher getRefWatcher(Context context){
    
            MyApplication application = (MyApplication) context.getApplicationContext();
            return application.refWatcher;
        }
    
        private RefWatcher refWatcher;
    
        @Override
        public void onCreate() {
            super.onCreate();
            refWatcher = LeakCanary.install(this);
        }
    }
    

    第二步:监控Activity中的内存泄漏问题

    package com.app.client;
    
    import android.app.Application;
    import android.content.Context;
    
    import com.squareup.leakcanary.LeakCanary;
    import com.squareup.leakcanary.RefWatcher;
    
    
    public class MyApplication extends Application {
    
        public static RefWatcher getRefWatcher(Context context){
    
            MyApplication application = (MyApplication) context.getApplicationContext();
            return application.refWatcher;
        }
    
        private RefWatcher refWatcher;
    
        @Override
        public void onCreate() {
            super.onCreate();
            refWatcher = LeakCanary.install(this);
        }
    }
    

    Manifest配置

     <application
            android:name=".MyApplication"
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme" >
            <activity android:name=".MainActivity" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>

    第三步:生成的泄漏结果图

    这里写图片描述                   这里写图片描述

  • 相关阅读:
    esp32(M5STACK)在线体验(Ubuntu)
    esp32(M5STACK)程序烧写(Ubuntu)
    在Ubuntu环境下搭建esp32开发环境
    markdown让文字居中和带颜色
    Doxyfile中插入图片
    System.load 与 System.loadLibrary 的使用
    常见mysql的数据迁移
    mysql中有关树的函数
    spring整合quartz实现动态定时器
    javaweb项目中发布webservices服务
  • 原文地址:https://www.cnblogs.com/yue31313/p/7396964.html
Copyright © 2011-2022 走看看