Handler機(jī)制4個(gè)關(guān)鍵對(duì)象:
1荧呐、Message:Message是在線(xiàn)程之間傳遞的信息汉形,用于不同線(xiàn)程之間交換數(shù)據(jù)。常用的兩個(gè)字段:what用于攜帶整形數(shù)據(jù)倍阐;obj用來(lái)攜帶一個(gè)Object對(duì)象概疆。
2、Handler:用于發(fā)送和處理信息峰搪。Handler對(duì)象常用方法:sendMessage()用于發(fā)送消息岔冀,發(fā)出的消息最終傳遞到handlerMessage()方法中。
3罢艾、MessageQueue(消息隊(duì)列):存放通過(guò)Handler發(fā)送的消息楣颠,等待處理。一個(gè)線(xiàn)程中只有一個(gè)MessageQueue對(duì)象咐蚯。
4童漩、Looper:MessageQueue的管家,調(diào)用Looper的loop()方法后春锋,就會(huì)進(jìn)入一個(gè)無(wú)限循環(huán)中矫膨,然后每當(dāng)發(fā)現(xiàn)MessageQueue中存在一條消息,就會(huì)將其取出期奔,傳遞到Handler的handlerMessage()方法中侧馅。每個(gè)線(xiàn)程只會(huì)有一個(gè)Looper對(duì)象,在主線(xiàn)程創(chuàng)建Handler對(duì)象時(shí)呐萌,系統(tǒng)自動(dòng)創(chuàng)建Looper對(duì)象馁痴,故不需要手動(dòng)創(chuàng)建其對(duì)象,而子線(xiàn)程中的Handler對(duì)象肺孤,需要調(diào)用Looper.loop()方法開(kāi)啟消息循環(huán)罗晕。