Handler,Looper,MessageQueue
一、Handler
1.在调用线程,使用
Message msg = handler.obtainMessage();
msg.obj = “ahahah”;
handler.sendMessage(msg);
发送消息
2.在执行线程,实例化Handler对象,重写handleMessage 方法,执行具体操作。
二Looper
1.Looper.prepare方法中,实例化一个looper(包含MseeageQueue),放到全局的sThreadLocal里面,与进程对象对应。
2.实例化handler时,获取上面的looper赋值给自己的mLooper对象 ,并获取mLooper中的MseeageQueue
3.Looper.loop方法,从消息队列获取消息,执行。
三、Message
1.Message msg = handler.obtainMessage();就是生成一个message,并把handler付给message
一个handler对应一个looper,一个looper对一个一个messageQueue;
利用handler生成message,message的target属性就是handler ,一个handler可以生成多个message
http://www.tuicool.com/articles/JFJvu2 ;
四、handler.post(r)方法, 会把r放到msg里面,然后通过消息队列,直接调用r.run()
区别在于上面的会在执行线程定义运行内容,这个会在驱动线程定义内容
一个activity中可以有多个handler,但是只能有一个looper,looper中有messageQueue。