LeakCanary:OOM无所遁形

LeakCanary,它是一个Android和Java的内存泄露检测库,可以大幅度减少了开发中遇到的OOM问题,对于开发者来说,无疑是个福音;

以下是我的参考资料,写得很不错:

1.LeakCanary:让内存泄露无所遁形

2.LeakCanary中文使用说明

   

AndroidStudio (官方)上使用LeakCanary 请移步: 

https://github.com/square/leakcanary

Eclipse 上使用LeakCanary 请移步我的: 

https://github.com/SOFTPOWER1991/LeakcanarySample-Eclipse

工程包括:

  1. LeakCanary库代码
  2. LeakCanaryDemo示例代码

使用步骤:

  1. 将LeakCanary import 入自己的工程

  2. 添加依赖:

    compile project(':leakcanary')

  3. Application中进行配置

    public class ExampleApplication extends Application {
    
      ......
      //在自己的Application中添加如下代码
    public static RefWatcher getRefWatcher(Context context) {
        ExampleApplication application = (ExampleApplication) context
                .getApplicationContext();
        return application.refWatcher;
    }
    
      //在自己的Application中添加如下代码
    private RefWatcher refWatcher;
    
    @Override
    public void onCreate() {
        super.onCreate();
        ......
            //在自己的Application中添加如下代码
        refWatcher = LeakCanary.install(this);
        ......
    }
    
    .....
    }

  4. 在Activity中进行配置(在onDestory中处理)

    @Override 
    public void onDestroy() {
        super.onDestroy();
        ExampleApplication.getRefWatcher(this).watch(this);
      }

  5. AndroidMainfest.xml 中进行配置,添加如下代码

    <service
                android:name="com.squareup.leakcanary.internal.HeapAnalyzerService"
                android:enabled="false"
                android:process=":leakcanary" />
            <service
                android:name="com.squareup.leakcanary.DisplayLeakService"
                android:enabled="false" />
    
            <activity
                android:name="com.squareup.leakcanary.internal.DisplayLeakActivity"
                android:enabled="false"
                android:icon="@drawable/__leak_canary_icon"
                android:label="@string/__leak_canary_display_activity_label"
                android:taskAffinity="com.squareup.leakcanary"
                android:theme="@style/__LeakCanary.Base" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>

    当我们的App中存在内存泄露时会在通知栏弹出通知:

这里写图片描述

当点击该通知时,会跳转到具体的页面,展示出Leak的引用路径,如下图所示:

这里写图片描述

好了处女作就此完结大笑生气奋斗


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值