LeakCanary还能这样????(自定义保存泄漏信息)

对于Android开发来说,用leakcanary来检测内存泄漏很是方便与快捷的。但是由于本人工作原因,LeakCanary用起来着实无法满足需求,因为我是开发机顶盒和车机的Android系统app,这个时候系统不发弹出Notifaciton,就无法看到内存泄漏的具体信息。有人会说看源码,在show提示Notification的之前,会保存当时分析的内存快照以及结果问题,如下:

save.png

leakcanary是保存了相关信息,但是本人打开result的文件部分乱码,所有信息糅杂在一起,及其没办法分析。所以在此情况下,研读一下leakcanary源码流程,根据版本情况共汇总两种改法。

第一种(推荐)

偶然间发现在新版本中,leakcanary源码中的DisplayLeakService.java类中新加了一个空方法,如下:

image.png

看注释,原来是可以集成此类复写此方法,留给有缘人发挥的啊,真是官方介绍里面也不提一下,小弟很难找到还有此天堂代码。废话不多说,上代码。

一、集成DisplayLeakService类,重写afterDefaultHandling()方法,实现自己的泄流信息保存
image.png
image.png

二、在manifest.xml文件中注册该service
image.png
三、比较重要,在Application中注册的时候要根据源码的来如下:
源码中如是写到:
image.png
于是在自己的Application中:
image.png

以上,大功告成。

第二种

在早期版本中,就只有老老实实的把源码下载下来(官方下载地址:git@github.com:square/leakcanary.git),如图:

image.png

将红框中的module合并在一起。接下来就是保存我们自己的信息文件了,

一、修改就在AbstractAnalysisResultService.java中的sendResultToListener方法新增如下代码:
image.png

二、在AnalyzedHeap.java中新增save()方法:如下:
image.png

就这样,很简单的完成了,保存路径可以随意更改,将此module引入自己的项目中,用法完全不用改变。

以上仅是自己的一点经验,如有不足之处请多多指教,谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值