Android 消息处理源代码分析(1)
在Android中,通常被使用的消息队列的代码在文件夹\sources\android-22\android\os下,涉及到下面几个类文件
Handler.java
在Android中,通常被使用的消息队列的代码在文件夹\sources\android-22\android\os下,涉及到下面几个类文件
Handler.java
Looper.java
Message.javaMessageQueue.java
Message.java
public final class Message implements Parcelable {
public int what; //消息种类
public int arg1; //低开销的整型參数
public int arg2;
public Object obj; //Object型数据
public Messenger replyTo; //消息处理完后通知给发送者
/*package*/ int flags; //消息标记:正在使用和异步等
/*package*/ long when; //消息创建时的时间
/*package*/ Bundle data; //消息附带的额外数据
/*package*/ Handler target; //消息接受者,处理者
/*package*/ Runnable callback; //优先使用回调处理来处理消息
/*package*/ Message next; //下一个消息。形成链表
private static Message sPool; //消息池中的头消息
上面中的target,通常由又一次实现的Handler子类的handleMessage函数来处理消息
public static Message obtain() { //获取消息的函数,假设有消息的话则获取出来m,链表指针移动一位,否则则返回一条空消息
synchronized (sPoolSync) {
if (sPool != null) {
Message m = sPool;
sPool = m.next;
m.next = null;
m.flags = 0; // clear in-use flag
sPoolSize--;
return m;
}
}
return new Message();
}
public void sendToTarget() { //发送消息给处理者
target.sendMessage(this); //调用Handler.java中的函数
}
}
本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5239371.html,如需转载请自行联系原作者