而现在的代码更加复杂,有很多的模板代码,当把postDelayed设置为一个短时间,比如50ms的情况下,写这么多代码就有点亏了。其实,还有一个更简单的方法。
onDestroy中手动控制声明周期Handler可以使用removeCallbacksAndMessages(null),它将移除这个Handler所拥有的Runnable与Message。
//Fixed by manually control lifecycle @Override protected void onDestroy() { super.onDestroy(); myHandler.removeCallbacksAndMessages(null); }现在运行,旋转手机,导出内存
removeCallbacks_memory_analyze
Good!只有一个实例。
这样写可以让你的代码更加简洁与可读。唯一要记住的就是就是要记得在生命周期onDestory的时候手动移除所有的消息。
使用WeakHander(这个是第三方库,我就不翻译了,大家去Github上去学习吧)
结论在Handler中使用postDelayed需要额外的注意,为了解决问题,我们有三种方法
这三种你可以任意选用,第二种看起来更加合理,但是需要额外的工作。第三种方法是我最喜欢的,当然你也要注意WeakHandler不能与外部的强引用共同使用。
更多Android Studio相关内容可以看看以下的有用链接:
在Ubuntu 15.04下安装Android Studio
Ubuntu 12.04(64位)安装Android Studio 全过程
Android Studio设置主题 和 不支持中文的问题解决方法
Android Studio 下载安装以及不能打开的解决办法