在Android中利用Handler的原理主要是用来根据接收的消息,处理UI更新。Thread线程发出Handler消息,通知更新UI。
1.Handler在类中的写法:
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch(msg.what) {
case 1:
//do something in main UI Thread
Bundle bundle = msg.getData();
break;
}
}
};
2.在类中子线程调用Handler:
...
Message msg = new Message();
Bundle bundle = new Bundle();
msg.setData(bundle);
msg.what=1;
handler.sendMessage(msg);
...
3.使用Handler避免内存溢出的方法:移除所有的消息和回调,简单一句话就是清空了消息队列。注意,不要以为你post的是个Runnable或者只是sendEmptyMessage。你可以看一下源码,在handler里面都是会把这些转成正统的Message,放入消息队列里面,所以清空队列就意味着这个Handler直接被打成原型了,当然也就可以回收了。所以在外面的Activity或者Fragment中的关闭方法中,如onDestroy中调用一下handler.removeCallbacksAndMessages(null);