一、Android的消息机制:
1、概念:Handler的运行机制以及Handler所附带的MessageQueue和Looper的工作过程。
1)、Handler:
a、用于将一个任务切换到一个目标线程去执行,它的运行依赖底层的MessageQueue和Looper支撑。内部的Looper负责从MessageQueue中查找消息,有的话执行,没有则一直等待。
b、在创建时,通过Looper的ThreadLocal(可以在不同的线程中互不干扰的存储并提供数据)获取到当前线程的Looper,然后构造出消息循环系统。线程默认没有Looper,需要手动创建。
2)、ThreadLocal:
a、线程内部的一个数据存储类,通过它可以在指定线程中存储数据,存储的数据也只能在指定线程内获取到。
b、可以理解为以线程作为数据的作用域,并且不同的线程具有不同的数据副本。还可用于复杂逻辑下的对象传递,可以使用ThreadLocal将对象作为线程内的全局对象而存在,使用get方法即可获取到。
3)、MessageQueue:
4)、Looper:
a、使用:线程中创建并开启消息循环
<span style="white-space:pre"> </span>Looper.prepare();
<span style="white-space:pre"> </span>Handler handler=new Handler();
<span style="white-space:pre"> </span>Looper.loop();
b、主线程Looper的创建和获取:
c、子线程中需要退出Looper
二、主线程的消息循环