安卓中的異步消息處理機(jī)制主要有四個(gè)部分:
Message、Handler、MessageQueue肚豺、Lopper
下面對(duì)其進(jìn)行介紹:
1、Message
在線程之間傳遞信息界拦,可以在內(nèi)部攜帶少量的信息吸申,用于在不同線程之間交換數(shù)據(jù)。是Handler接收和處理的消息對(duì)象享甸。
2呛谜、MessageQueue
消息隊(duì)列,主要用于存放所有通過Handler發(fā)送的消息枪萄。采用先進(jìn)先出的方式管理Message隐岛,這部分消息會(huì)一直存在于消息隊(duì)列中,等待被處理瓷翻。程序創(chuàng)建Looper對(duì)象時(shí)聚凹,會(huì)在它的構(gòu)造器中創(chuàng)建MessageQueue對(duì)象,每個(gè)線程中只有一個(gè)MessageQueue對(duì)象齐帚。
3妒牙、Looper
每個(gè)線程只能擁有一個(gè)Looper,Looper是線程中MessageQueue的管家对妄,調(diào)用Looper的loop()方法后湘今,就會(huì)進(jìn)入一個(gè)無(wú)限循環(huán)中,每當(dāng)發(fā)現(xiàn)MessageQueue中存在一條消息剪菱,就將它取出摩瞎,并傳遞到Handler的handleMessage()方法中拴签。
Looper構(gòu)造器源代碼:
private Looper(){
mQueue = new MessageQueue();
mRun = true;
mThread = Thread.currentThread();
}
4、Handler
用于發(fā)送和處理消息旗们,發(fā)送消息使用Handler的sendMessage()方法蚓哩,發(fā)出的消息經(jīng)過一系列處理后,最終傳遞到Handler的handleMessage()方法中上渴。