一、先看下他们各自的用途
Handler:负责Message消息的发送与处理;
Message:消息载体,实现Parcelable接口;
MessageQueue:消息队列,对消息进行管理;
Looper:消息泵,不断的从MessageQueue消息队列中获取消息并派发到对应的Handler中进行处理;
Thread:线程,整个消息的调度是在这进行的。
二、实现过程
①创建消息
//创建一个消息实体
Message msg = Message.obtain(mHandler);
//对消息实体赋值
msg.what = 1;
//发送到对应的Handler(即在创建消息实体传入的mHandler)进行处理
msg.sendToTarget();
②消息传递过程
上面的sendToTarget会传递到Handler中
public final boolean sendMessage(Message msg)
{
return sendMessageDelayed(msg, 0);
}
这里后面有调用到了
public boolean sendMessageAtTime(Message msg, long uptimeMillis)
{
boolean sent = false;
MessageQueue queue = mQueue;
if (queue != null) {
msg.target = this;
sent = queue.enqueueMessage(msg, uptimeMillis);
}
else {
RuntimeException e = new RuntimeException(
this + " sendMessageAtTime() called