android 内存检测框架,Android项目内存泄漏检测
关于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项目内存泄漏检测相关推荐
- android媒体播放框架,Android 使用超简单的多媒体播放器JiaoZiVideoPlayer
在之前的项目中用到了视频播放的功能,在网上看了看使用了大家用的比较多的一个开源项目JiaoZiVideo可以迅速的实现视频播放的相关功能. JiaoZiVideo的简单使用 集成了JiaoZiVide ...
- android banner动画框架,Android Studio Banner轮播图使用
现在恰好有个项目需要做个轮播图效果,这个需求也是很常见的需求,于是就做个笔记写一下实现过程 分为加载本地图片和网络图片 加载本地图片 第一步:先在build.gradle中加入banner和glide ...
- Android测试最新框架,Android单元测试-常见的方案比较
前言 本文将介绍在Android Studio中,android单元测试的介绍和实现.相关代码托管在github上的AndroidJunitDemo中,涉及到的用例代码收集于google官方提供的测试 ...
- Android PDF阅读框架/Android PDF框架简单使用,简单快速集成简易的PDF阅读器 ,AndroidPdfViewer框架简单使用。
文章目录 1:前言 使用步骤 步骤1 导包 / 导引用 / 添加依赖 步骤2 更改xml布局文件 步骤3 java文件处理 1:前言 因为前段时间项目展示,我们小组本打算做的是TXT阅读框架,但是找了 ...
- android 屏幕适配框架,Android屏幕适配
为什么要进行Android屏幕适配 由于Android系统的开放性,任何用户.开发者.OEM厂商.运营商都可以对Android进行定制,于是导致: 1.Android系统碎片化:小米定制的MIUI.魅 ...
- android 观察者的框架,Android 架构师7 设计模式之观察者模式
前言 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern).比如,当一个对象被修改时,则会自动通知它的依赖对象.观察者模式属于行为型模式. 观察者模式.png 观察者模式 被 ...
- android使用 注解框架,Android实践 | 注解框架ButterKnife基本使用
使用ButterKnife,我们可以不用写很多的findViewById()语句,以及通过getResources获取String.Color等资源,这可以让我们的代码更加简洁,使用起来也很方便.下面 ...
- android svg动画框架,Android实现炫酷SVG动画效果
svg是目前十分流行的图像文件格式了,svg严格来说应该是一种开放标准的矢量图形语言,使用svg格式我们可以直接用代码来描绘图像,可以用任何文字处理工具打开svg图像,通过改变部分代码来使图像具有交互 ...
- android的自动布局框架,Android ConstraintLayout 构建自适应界面
使用 ConstraintLayout 构建自适应界面 ConstraintLayout 可让您使用扁平视图层次结构(无嵌套视图组)创建复杂的大型布局.它与 RelativeLayout 相似,其中所 ...
最新文章
- 使用Java HttpURLConnection抓取网页内容(一)限制返回的网页大小
- silverlight 跨域文件位置
- esp8266make相关文件改进
- 荒野乱斗角色设计浅谈
- 〈转〉用VS2005.NET进行三层结构应用程序的开发
- 20220208--CTF MISC--两道简单的MISC题目
- File was loaded in the wrong encoding: 'UTF-8'
- python安装轮子_python
- 用户与组在Linux 菜单,linux 用户和组的管理
- 设计模式(13)——构建者模式(Builder)
- (CMA-ES源码)协方差自适应进化策略(Covariance Matrix Adaptation Evolution Strategy,CMA-ES)——最好的单目标进化算法?
- java 使用 poi 操纵 excel2003 经验总结
- 笔记:Python Data Science Toolbox (Part 1)
- 小米路由器青春版开启SSH刷入Padavan固件
- 计算机原理求循环余数,国防科技大学2003年计算机原理考研试题
- 消控中心人员配置_消控室的设置要求有哪些?
- 笔记本电脑桌面没有显示计算机,关于笔记本电脑外接显示器后没有桌面图标的问题...
- Windows10 LTSB/LTSC 企业版安装应用商店
- 探索 Sa-Token (一) SpringBoot 集成 Sa-Token
- 大数据技术之Hive 第4章 DDL数据定义语言
热门文章
- Lync Server 2010标准版系列PART3:证书准备
- 操作系统(13)-操作系统中的死锁及其预防、避免、检测与解除
- ffmpeg-filter 入门
- 【java】初始化一个指定大小的list,在指定位置set存入元素,下标越界
- js创建对象的几种方式
- AngularJS1.5+ 笔记
- eclipse tomcat插件安装
- LDA总结 (一) 共轭分布
- 记录一次SQL查询语句
- tomcat内存溢出(修改catalina.bat后windows启动tomcat服务没有效果) | 王猛的个人主页...