中的
和
李先静发表评论
转载时请注明出处和作者联系方式
文章出处: !""#$#%"&
作者联系方式:李先静'()$**$*%$+
前几天和一位同事讨论 中 和 ,其中一个问题是:创建
时会不会创建 ?
我对 ,- 编程不熟,但直觉告诉我不会:我认为 只是用来辅助实现异
步操作的东西。当时我拿了 ./0中的 来做对比, 就相当于加
一个 函数,系统处理完前面的 后就会处理这个 。毕竟没
有看过里面的实现代码,所以当时并不确信。今天看了下:
MessageQueue
消息队列 是一个以执行时间为序的优先级队列:
普通消息的执行为当前时间,先发送的前面,后发送在后面,这是典型的
1213。
最高优先级的消息执行时间为 ,所以直接插在队列的最前面,通常会立即执
行。
而在将来执行的 相当于 4$,执行时间为当前时间05 的时间。
的函数 &67$8用来向
队列中插入消息。
和 ./0 不同之处在于, 只是一段数据,里面说明了要做
什么,但不并知道如何做。而 带有自己的数据和处理函数,它知道如何做。
放入队列中后,在处理这些消息时到底要做些什么呢?这就引入了
!
Handler
对消息队列的 6 做了包装,这其实并不重要,因为完全
可 以 直 接 调 用 6 来 实 现 。 重 要 的 把 在 包 装
6 的同时,把 的 ** 设成了自己,即为 指定
执行的行为:
if (queue != null) {
msg.target = this;
sent = queue.enqueueMessage(msg,
uptimeMillis);
}