本文从http://blog.youkuaiyun.com/l_yqing/article/details/7770729总结了重点,感谢原作者
1.Loop.myLooper()得到当前线程的Looper对象,通过Loop.getMainLooper()可以获得当前进程的主线程的Looper对象。
2.Android系统的消息队列(MessageQueue)和消息循环(Looper)都是针对具体线程的,一个线程可以存在(当然也可以不存在)一个消息队列和一个消息循环,特定线程的消息只能分发给本线程,不能进行跨线程,跨进程通讯。
3.新建的工作线程默认是没有消息队列(MessageQueue)和消息循环(Looper)的,如果想让该线程具有消息队列和消息循环,需要在线程中首先调用Looper.prepare()来创建消息队列,然后调用Looper.loop()进入消息循环。
class LooperThread extends Thread {
public Handler mHandler;
public void run() {
Looper.prepare();
mHandler = new Handler() {
public void handleMessage(Message msg) {
// process incoming messages here
}
};
Looper.loop();
}
}
4.Handler的作用是把消息(Message)加入特定的消息队列(MessageQueue)中,并处理该消息队列中的消息。构造Handler的时候可以指定一个消息循环(Looper)对象,如果不指定则利用当前线程的消息循环对象创建。
5.Activity、Looper、Handler的关系如下图所示
本文从http://blog.youkuaiyun.com/l_yqing/article/details/7770729 总结了重点,感谢原作者