关于Android项目的内存泄漏是一个老生常谈的问题,之前一直是在写代码时各种注意,比如IO流要及时关闭,引用的curcor要及时关闭等,这样做确实能规避一部分的内存泄漏,不过还是会有漏网之鱼,因此除了养成良好的编程习惯之外,还需要引用各种框架来主动检测,对于框架,本人习惯使用leakcanary。需要注意的一点是,leakcanary可以检测Activity和fragment中的内存泄漏,网上有些文章中并没有写全而是只写了Activity的。下面是本人总结的引用leakcanary的步骤:

1:在项目的build.gradle中加入依赖:

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+'

debugCompile'com.squareup.haha:haha:2.0.3'

debugCompile跟releaseCompile 引入的是不同的包,这样在在 debug 版本上,集成 LeakCanary 执行内存泄漏监测,而在 release 版本上,集成一个无操作的 wrapper ,对程序性能不会有影响

需要依赖:debugCompile'com.squareup.haha:haha:2.0.3',然后另外三个的依赖的版本号要写1.5+,从而获取最新的版本,否则可能会报异常

2:在项目的application类的onCreate()方法中设置LeakCanary,下面是application类代码:

public class MyAppextends Application {

public static MyApp instance;

private RefWatcher refWatcher;

@Override

public void onCreate() {

super.onCreate();

instance =this;

refWatcher = setLeakCanary();

}

private RefWatcher setLeakCanary()

{

//初始化leakCanary,用来检测内存泄漏

if (LeakCanary.isInAnalyzerProcess(this)) {

return RefWatcher.DISABLED;

}

return LeakCanary.install(this);

}

public RefWatcher getRefWatcher() {

if (refWatcher !=null)

{

return refWatcher;

}else {

return null;

}

}

//单例模式中获取唯一的MyApp实例

public static MyApp getInstance() {

if (null ==instance) {

instance =new MyApp();

}

return instance;

}

}

3:在application类中设置完成后,就可以检测activity的内存泄漏了,想要检测fragment的内存泄漏,需要在fragment的onDestroy()方法中加入以下代码:

//用来检测Fragment中的内存泄漏

RefWatcher refWatcher = MyApp.getInstance().getRefWatcher();

if (refWatcher !=null)

{

refWatcher.watch(this);

}

android 内存检测框架,Android项目内存泄漏检测相关推荐

  1. android媒体播放框架,Android 使用超简单的多媒体播放器JiaoZiVideoPlayer

    在之前的项目中用到了视频播放的功能,在网上看了看使用了大家用的比较多的一个开源项目JiaoZiVideo可以迅速的实现视频播放的相关功能. JiaoZiVideo的简单使用 集成了JiaoZiVide ...

  2. android banner动画框架,Android Studio Banner轮播图使用

    现在恰好有个项目需要做个轮播图效果,这个需求也是很常见的需求,于是就做个笔记写一下实现过程 分为加载本地图片和网络图片 加载本地图片 第一步:先在build.gradle中加入banner和glide ...

  3. Android测试最新框架,Android单元测试-常见的方案比较

    前言 本文将介绍在Android Studio中,android单元测试的介绍和实现.相关代码托管在github上的AndroidJunitDemo中,涉及到的用例代码收集于google官方提供的测试 ...

  4. Android PDF阅读框架/Android PDF框架简单使用,简单快速集成简易的PDF阅读器 ,AndroidPdfViewer框架简单使用。

    文章目录 1:前言 使用步骤 步骤1 导包 / 导引用 / 添加依赖 步骤2 更改xml布局文件 步骤3 java文件处理 1:前言 因为前段时间项目展示,我们小组本打算做的是TXT阅读框架,但是找了 ...

  5. android 屏幕适配框架,Android屏幕适配

    为什么要进行Android屏幕适配 由于Android系统的开放性,任何用户.开发者.OEM厂商.运营商都可以对Android进行定制,于是导致: 1.Android系统碎片化:小米定制的MIUI.魅 ...

  6. android 观察者的框架,Android 架构师7 设计模式之观察者模式

    前言 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern).比如,当一个对象被修改时,则会自动通知它的依赖对象.观察者模式属于行为型模式. 观察者模式.png 观察者模式 被 ...

  7. android使用 注解框架,Android实践 | 注解框架ButterKnife基本使用

    使用ButterKnife,我们可以不用写很多的findViewById()语句,以及通过getResources获取String.Color等资源,这可以让我们的代码更加简洁,使用起来也很方便.下面 ...

  8. android svg动画框架,Android实现炫酷SVG动画效果

    svg是目前十分流行的图像文件格式了,svg严格来说应该是一种开放标准的矢量图形语言,使用svg格式我们可以直接用代码来描绘图像,可以用任何文字处理工具打开svg图像,通过改变部分代码来使图像具有交互 ...

  9. android的自动布局框架,Android ConstraintLayout 构建自适应界面

    使用 ConstraintLayout 构建自适应界面 ConstraintLayout 可让您使用扁平视图层次结构(无嵌套视图组)创建复杂的大型布局.它与 RelativeLayout 相似,其中所 ...

最新文章

  1. 使用Java HttpURLConnection抓取网页内容(一)限制返回的网页大小
  2. silverlight 跨域文件位置
  3. esp8266make相关文件改进
  4. 荒野乱斗角色设计浅谈
  5. 〈转〉用VS2005.NET进行三层结构应用程序的开发
  6. 20220208--CTF MISC--两道简单的MISC题目
  7. File was loaded in the wrong encoding: 'UTF-8'
  8. python安装轮子_python
  9. 用户与组在Linux 菜单,linux 用户和组的管理
  10. 设计模式(13)——构建者模式(Builder)
  11. (CMA-ES源码)协方差自适应进化策略(Covariance Matrix Adaptation Evolution Strategy,CMA-ES)——最好的单目标进化算法?
  12. java 使用 poi 操纵 excel2003 经验总结
  13. 笔记:Python Data Science Toolbox (Part 1)
  14. 小米路由器青春版开启SSH刷入Padavan固件
  15. 计算机原理求循环余数,国防科技大学2003年计算机原理考研试题
  16. 消控中心人员配置_消控室的设置要求有哪些?
  17. 笔记本电脑桌面没有显示计算机,关于笔记本电脑外接显示器后没有桌面图标的问题...
  18. Windows10 LTSB/LTSC 企业版安装应用商店
  19. 探索 Sa-Token (一) SpringBoot 集成 Sa-Token
  20. 大数据技术之Hive 第4章 DDL数据定义语言

热门文章

  1. Lync Server 2010标准版系列PART3:证书准备
  2. 操作系统(13)-操作系统中的死锁及其预防、避免、检测与解除
  3. ffmpeg-filter 入门
  4. 【java】初始化一个指定大小的list,在指定位置set存入元素,下标越界
  5. js创建对象的几种方式
  6. AngularJS1.5+ 笔记
  7. eclipse tomcat插件安装
  8. LDA总结 (一) 共轭分布
  9. 记录一次SQL查询语句
  10. tomcat内存溢出(修改catalina.bat后windows启动tomcat服务没有效果) | 王猛的个人主页...