handler就是消息处理器;并发
Handler、Looper和MessageQueue(消息队列)三者实现了安卓中最重要的消息传递、处理机制。oop
Handler:负责将消息对象加入到消息队列(Message Queue)中;code
Message Queue:蓝色矩形为消息队列。特色为先进先出,数据从尾部加入,从头部出来。对象
Looper:负责不停地从队列中往外取出消息对象;没有消息对象时处于等待状态。取出消息对象后,将会交给Handler处理。继承
例子具体实现这样一个功能:队列
点击按钮,标记消息对象,并发送到消息队列中。 以后当hanlder接收到这个消息对象时,将消息对象的标记(what字段)打印出来。图片
class ButtonListener implements OnClickListener { public void onClick(View v) { Message msg = handler.obtainMessage();//建立消息 msg.what = 2;//消息标记what,是一个整型字段 handler.sendMessage(msg); } }
接着系统会进行如下操做:消息队列
1 消息对象被发送到消息队列中it
2 Looper从消息队列中取出消息对象class
3 Looper找到与消息对象对应的hanlder对象
4 Looper将消息对象交给handler对象处理
5 handler对象调用handlerMessage(Message msg)方法,来处理消息对象
那么咱们须要建立一个继承Handler的类,并重写这个方法。
class MyHandler extends Handler { public void handleMessage(Message msg) { super.handleMessage(msg); } }
public void handleMessage(Message msg) { super.handleMessage(msg); int what = msg.what; System.out.println("what: " + what); }
(handler 为 成员变量)
private Handler handler;
handler = MyHandler();
完成以后,咱们点击按钮,就能打印出消息标记了: