Android 在 Eclipse 项目中使用 Leakcanary 内存泄露检测
来源:互联网 发布:腾讯代理绝地求生优化 编辑:程序博客网 时间:2024/06/10 08:04
一、前言
Leakcanary 是 Square 公司推出的一款开源项目,如果说没听说过 Leakcanary 的话,那 Square 的其他产品应该有听说过吧,曾推出过 okhttp,retrofit,picasso 等开源项目。Leakcanary 呢,是用于检测项目的内存泄露的,使用起来也很简单,但是这个项目是用于 Android Studio 的,至于 在 Android Studio 里怎么使用这里就不说了,打开上面的 Leakcanary 那个 Github 链接里面有说,由于一些人习惯用 Eclipse,或者一些之前在 Eclipse 中开发的老项目还没转成 Android Studio 的那怎么用这个 Leakcanary来检测内存泄露呢?这里我把 Leakcanary 转成了在 Eclipse 中可以使用的项目。
二、在 Eclipse 中运行效果
这个例子是点击了 Button 后创建了个匿名 AsyncTask,在 AsyncTask 中 sleep 了 20 秒,由于匿名内部类持有 Activity 的引用,在退出程序后 Activity 被销毁了,但 AsyncTask 还是在运行的,有引用还被持有着,就被 Leakcanary 检测到了。
三、适用于 Eclipse 的 Leakcanary 项目地址
Leakcanary-eclipse 传送门
目前是根据 Leakcanary 1.5.1 的版本进行转化的
四、使用
(一)引用
下载上面二中用于 Eclipse 的 Leakcanary 项目,导入 Leakcanary-watcher、Leakcanary-analyzer、Leakcanary-android, 在当前项目的引用 Leakcanary-android 这个 library。
(二)在 AndroidManifest 中配置
打开当前的 AndroidManifest 添加下面的代码。
<!-- Leakcanary config start --> <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/leak_canary_LeakCanary.Base" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.squareup.leakcanary.internal.RequestStoragePermissionActivity" android:enabled="false" android:icon="@drawable/leak_canary_icon" android:label="@string/leak_canary_storage_permission_activity_label" android:taskAffinity="com.squareup.leakcanary" android:theme="@style/leak_canary_Theme.Transparent" /> <!-- Leakcanary config end -->
> 还有权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
(三)在 Application 中初始化
新建一个 Application 类,继承自 Application 的,如果你项目已经有那就不需要新建了。
覆盖 onCreate() 方法,在 onCreate() 方法里调用 LeakCanary 的 install() 方法就可以了。
public class MyApplication 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); }}
- Android 在 Eclipse 项目中使用 Leakcanary 内存泄露检测
- 使用leakcanary检测Android项目内存泄露
- 如何在Android Studio中使用LeakCanary检测内存泄露
- LeakCanary在检测Android项目的内存泄露
- Android 使用LeakCanary 检测内存泄露
- Android 使用LeakCanary 检测内存泄露
- Android 使用LeakCanary 检测内存泄露
- Android 使用LeakCanary 检测内存泄露
- Android内存泄露检测(LeakCanary)
- LeakCanary-Android内存泄露检测
- android leakCanary检测内存泄露
- Android LeakCanary 检测内存泄露
- 使用LeakCanary检测内存泄露
- 使用LeakCanary检测内存泄露
- 使用开源项目LeakCanary检测应用的内存泄露
- Android内存泄露检测LeakCanary使用注意点
- [leakcanary]内存泄露检测
- LeakCanary 检测内存泄露
- eclipse的maven项目导入第三方jar包到pom.xml的方法
- JUnit使用(二)
- PHP调试的时候遇到Warning: session_start() [function.session-
- 理解Java内存模型
- bash数据流重定向与管道
- Android 在 Eclipse 项目中使用 Leakcanary 内存泄露检测
- Java内存管理:深入Java内存区域
- Gradle 1.12用户指南翻译——第五十九章. 组织构建逻辑
- 预习数组与指针
- [Azure]Azure虚拟机扩展的介绍和使用
- 标准表达式-Thymeleaf常见用法(二)
- C语言数组指针
- C# Winform 窗体美化(九、嵌入窗体)
- Unity5.x EventSystem事件系统