使用Android studio分析内存泄露(2)

而现在的代码更加复杂,有很多的模板代码,当把postDelayed设置为一个短时间,比如50ms的情况下,写这么多代码就有点亏了。其实,还有一个更简单的方法。

onDestroy中手动控制声明周期

Handler可以使用removeCallbacksAndMessages(null),它将移除这个Handler所拥有的Runnable与Message。

//Fixed by manually control lifecycle @Override protected void onDestroy() { super.onDestroy(); myHandler.removeCallbacksAndMessages(null); }

现在运行,旋转手机,导出内存

使用Android studio分析内存泄露


removeCallbacks_memory_analyze

Good!只有一个实例。

这样写可以让你的代码更加简洁与可读。唯一要记住的就是就是要记得在生命周期onDestory的时候手动移除所有的消息。

使用WeakHander

(这个是第三方库,我就不翻译了,大家去Github上去学习吧)

结论

在Handler中使用postDelayed需要额外的注意,为了解决问题,我们有三种方法

这三种你可以任意选用,第二种看起来更加合理,但是需要额外的工作。第三种方法是我最喜欢的,当然你也要注意WeakHandler不能与外部的强引用共同使用。

更多Android Studio相关内容可以看看以下的有用链接: 

Ubuntu 15.04下安装Android Studio   

Android Studio 2.0中的模拟器已提速50倍 

Ubuntu 12.04(64位)安装Android Studio 全过程  

Android Studio v0.1尝鲜  

Android Studio使用教程  

Android Studio开发指南

Android Studio设置主题 和 不支持中文的问题解决方法  

Android Studio 下载安装以及不能打开的解决办法  

Android Studio安装使用图文教程  

Ubuntu上安装Android Studio 1.3(谷歌 Android IDE 开发)   

Android Studio 的详细介绍请点这里
Android Studio 的下载地址请点这里 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3c9aeb4521542a5a0425f57ef348c171.html