安卓中的异步消息处理机制主要有四个部分:
Message、Handler、MessageQueue、Lopper
下面对其进行介绍:
1、Message
在线程之间传递信息,可以在内部携带少量的信息,用于在不同线程之间交换数据。是Handler接收和处理的消息对象。
2、MessageQueue
消息队列,主要用于存放所有通过Handler发送的消息。采用先进先出的方式管理Message,这部分消息会一直存在于消息队列中,等待被处理。程序创建Looper对象时,会在它的构造器中创建MessageQueue对象,每个线程中只有一个MessageQueue对象。
3、Looper
每个线程只能拥有一个Looper,Looper是线程中MessageQueue的管家,调用Looper的loop()方法后,就会进入一个无限循环中,每当发现MessageQueue中存在一条消息,就将它取出,并传递到Handler的handleMessage()方法中。
Looper构造器源代码:
private Looper(){
mQueue = new MessageQueue();
mRun = true;
mThread = Thread.currentThread();
}
4、Handler
用于发送和处理消息,发送消息使用Handler的sendMessage()方法,发出的消息经过一系列处理后,最终传递到Handler的handleMessage()方法中。
网友评论