- Handler、Looper(轮循器)、MessageQueue(消息队列)、Message(消息)工作原理----面试问题
与Handler一起工作的几个组件:
注意:
A:在主线程中系统默认已经初始化了一个Looper对象,并且已经loop(),所以在主线程中可以直接创建Handler对象进行使用。 B:程序员自己创建的子线程,必须手动创建一个Looper对象,并启动它。Looper.prepare(); //创建Looper对象,同时初始化一个消息队列 Looper.loop();//启动Looper。让Looper开始工作:去消息队列中取消息,然后交给当前线程中的Handler来处理。里面是个死循环
总结:
a:调用Loop.prepare(); b:创建Handler对象. c:调用Looper.loop(); 注意:在线程中调用过Looper.loop()之后,后面不能再写代码,因为loop()内部是个死循环,后面的写的代码无法执行到。 |
- 线程间通信的实现步骤:
1.在主线程中定义Handler的子类
2.重写Handler类的handleMessage()方法
3.用该子类定义全局的Handler对象,以便子线程使用
4.子线程获得handler对象用该对象的sendMessage()方法发送消息