LeakCanary:OOM无所遁形

来源:互联网 发布:淘宝双11销量排名 编辑:程序博客网 时间:2024/05/03 06:28

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;@Overridepublic 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的引用路径,如下图所示:

这里写图片描述

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


1 0
原创粉丝点击