Android Looper和Handler分析(15)
来源:未知 责任编辑:责任编辑 发表时间:2014-04-20 03:36 点击:次
}
else {
RuntimeException e = new RuntimeException(
this + " sendMessageAtTime() called with no mQueue");
Log.w("Looper", e.getMessage(), e);
}
return sent;
}
//还记得looper中的那个消息循环处理吗
//从消息队列中得到一个消息后,会调用它的target的dispatchMesage函数
//message的target已经设置为handler了,所以
//最后会转到handler的msg处理上来
//这里有个处理流程的问题
public void dispatchMessage(Message msg) {
//如果msg本身设置了callback,则直接交给这个callback处理了
if (msg.callback != null) {
handleCallback(msg);
} else {
//如果该handler的callback有的话,则交给这个callback处理了---相当于集中处理
if (mCallback != null) {
if (mCallback.handleMessage(msg)) {
return;
}
}
//否则交给派生处理,基类默认处理是什么都不干
handleMessage(msg);
}
}
..........
}
讲了这么多,该怎么创建和使用一个带消息循环的线程呢?
view plaincopy to clipboardprint?
//假设在onCreate中创建一个线程
//不花时间考虑代码的完整和严谨性了,以讲述原理为主。
....
... onCreate(...){
//难点是如何把android中的looper和java的thread弄到一起去。
//而且还要把随时取得这个looper用来创建handler
//最简单的办法就是从Thread派生一个
class ThreadWithMessageHandle extends Thread{
//重载run函数
Looper myLooper = null;
run(){
Looper.prepare();//将Looper设置到这个线程中
myLooper = Looper.myLooper();
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>