Handler允许发送和处理Message或Runnable对象到其所在线程的MessageQueue,Handler主要有以下两个作用:
1、将Message或Runnable应用post()或者sendMessage()方法发送到MessageQueu中,在发送时可以指定延迟时间,发送时间及要携带的Bundle数据,当MessageQueue循环到该Message时,调用相应的Handler对象的HandlerMessage()方法对其进行处理。
2、在子线程中与主线程进行通信,也就是在工作线程中与UI线程进行通信。
Runnable run = new Runnable() {
@Override
public void run() {
// TODO 自动生成的方法存根
}
};
handler.post(run);
当调用Post(Runnable r)方法时候,立即发送Runnable对象,该Runnable对象最后被封装成Message对象。
Handler不能直接发送Bundler对象,这样会报错,需要把Bundler对象放进Message中进行处理,如下:
Bundle bundle = new Bundle();
bundle.putBoolean("one", false);
Message msg = handler1.obtainMessage();
msg.setData(bundle);
handler1.sendMessage(msg);