Handler是由系统所提供的一种异步消息处理的常用方式,一般情况下不会发生内存泄露.
但既然是调优,当在A_Activity中使用handler发送了几个消息,然后又跳到B_Activity,这个时候如果我们想结束之前在A_Activity中发出的消息,不再占用多余的队列空间.怎么办呢?
原来,Handler中已经提供了一个removeCallbacksAndMessages去清除Message和Runnable:
handler.removeCallbacksAndMessages(null);
将方法参数设为null.
在Activity的销毁方法onDestroy()中调用该方法即可.
题外话:
熟悉Activity的生命周期是能让应用在性能调优时达到更好的实现方式. 比如onDestroy() 方法,onPause()方法等等, Activity销毁前生命周期会进入onDestroy(),当前Activity所用过且不再需要的占用内存的资源可以在这里进行一些处理, 比如将不再使用的视图资源清除掉,将正在访问而不再需要的网络连接给终止掉,将消息队列中不再需要的消息清除等等.这样当不断打开新的页面Activity,也能将应用多余的内存缓存尽量减少一些达到调优的目的.