Android Looper和Handler分析(11)
来源:未知 责任编辑:责任编辑 发表时间:2014-04-20 03:36 点击:次
那怎么往这个消息队列中发送消息呢??调用looper的static函数myQueue可以获得消息队列,这样你就可用自己往里边插入消息了。不过这种方法比较麻烦,这个时候handler类就发挥作用了。先来看看handler的代码,就明白了。
class Handler{
..........
//handler默认构造函数
public Handler() {
//这个if是干嘛用的暂时还不明白,涉及到java的深层次的内容了应该
if (FIND_POTENTIAL_LEAKS) {
final Class<? extends Handler> klass = getClass();
if ((klass.isAnonymousClass() || klass.isMemberClass() || klass.isLocalClass()) &&
(klass.getModifiers() & Modifier.STATIC) == 0) {
Log.w(TAG, "The following Handler class should be static or leaks might occur: " +
klass.getCanonicalName());
}
}
//获取本线程的looper对象
//如果本线程还没有设置looper,这回抛异常
mLooper = Looper.myLooper();
if (mLooper == null) {
throw new RuntimeException(
"Can't create handler inside thread that has not called Looper.prepare()");
}
//无耻啊,直接把looper的queue和自己的queue搞成一个了
//这样的话,我通过handler的封装机制加消息的话,就相当于直接加到了looper的消息队列中去了
mQueue = mLooper.mQueue;
mCallback = null;
}
//还有好几种构造函数,一个是带callback的,一个是带looper的
//由外部设置looper
public Handler(Looper looper) {
mLooper = looper;
mQueue = looper.mQueue;
mCallback = null;
}
// 带callback的,一个handler可以设置一个callback。如果有callback的话,
//凡是发到通过这个handler发送的消息,都有callback处理,相当于一个总的集中处理
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>