Android进阶——性能优化——内存泄漏检测——eclipse使用 leakcanary AS使用leakcanary

Leakcanary简介

我们经常被OOM所困扰,引起OOM往往都是内存泄漏长期没有解决造成的,如果在对象的生命周期本该结束的时候,这个对象还被一系列的引用,这就会导致内存泄漏,随着泄漏的累积,app将消耗完内存,直到OOM,LeakCanary 是一个开源的在debug版本中检测内存泄漏的java库。下面介绍其使用方法:

在eclipse中使用

1.下载为eclipse优化的Leakcanary,下载链接 http://download.csdn.net/detail/wo_ha/9755042

2. 将项目导入eclipse中;

3. 将Leakcanary作为自己项目的依赖库(右键单击自己的项目—–>Properties—–>Android—–>在Libary选择Add—–>选择导入的Leakcanary项目—–>Apply—–>OK),若出现V4包报错,请选择其中一个项目的V4包去替换另一个项目的V4包,参考http://blog.csdn.net/jackrex/article/details/8984033

4. 在自己项目的AndroidManifest中添加权限和相关的Activity、Service;

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <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>

        <service
            android:name="com.squareup.leakcanary.internal.HeapAnalyzerService"
            android:enabled="false"
            android:process=":leakcanary" />
        <service
            android:name="com.squareup.leakcanary.DisplayLeakService"
            android:enabled="false" />

5.自定义一个 Application;

public class ExampleApplication extends Application {
    public static RefWatcher getRefWatcher(Context context) {
        ExampleApplication application = (ExampleApplication) context.getApplicationContext();
        return application.refWatcher;
    }
    private RefWatcher refWatcher;
    @Override public void onCreate() {
        super.onCreate();
        refWatcher = LeakCanary.install(this);
    }
}
别忘在AndroidManifest的Application节点添加name哦

6.在需要观察的Activity的Destory方法添加如下代码;

    @Override
    protected void onDestroy() {
        super.onDestroy();
        RefWatcher refWatcher = ExampleApplication.getRefWatcher(this);
        refWatcher.watch(this);
    }

好啦,把Leakcanary集成到我们的eclipse项目中就完成了,如果有内存泄漏如下图,本讲解例子的源码:http://download.csdn.net/detail/wo_ha/9755057

效果图

在Android Studio中使用

这可比在eclipse中使用简单多了,只需要在需要的Mode的gradle中添加如下代码在同步下就可以了,使用的方法都是一样的,我就不贴代码了

dependencies {
    .......
    debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
    releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
    testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值