最近總習(xí)慣了rn胞锰,把老本行忘記得差不多了爽茴,所以復(fù)習(xí)一下handler機(jī)制
在Android系統(tǒng)中實(shí)現(xiàn)了一套類(lèi)似的消息處理機(jī)制葬凳。在下面介紹handler機(jī)制前,首先得了解以下幾個(gè)概念:
? ? 1. Message
? ? 消息室奏,理解為線程間通訊的數(shù)據(jù)單元火焰。例如后臺(tái)線程在處理數(shù)據(jù)完畢后需要更新UI,則可發(fā)送一條包含更新信息的Message給UI線程胧沫。
? ? 2. Message Queue
? ? 消息隊(duì)列昌简,用來(lái)存放通過(guò)Handler發(fā)布的消息,按照先進(jìn)先出執(zhí)行绒怨。
? ? 3. Handler
? ? Handler是Message的主要處理者纯赎,負(fù)責(zé)將Message添加到消息隊(duì)列以及對(duì)消息隊(duì)列中的Message進(jìn)行處理。
? ? 4. Looper
? ? 循環(huán)器南蹂,扮演Message Queue和Handler之間橋梁的角色犬金,循環(huán)取出Message Queue里面的Message,并交付給相應(yīng)的Handler進(jìn)行處理六剥。
? ? 5. 線程
? ? UI thread 通常就是main thread佑附,而Android啟動(dòng)程序時(shí)會(huì)替它建立一個(gè)Message Queue。
每一個(gè)線程里可含有一個(gè)Looper對(duì)象以及一個(gè)MessageQueue數(shù)據(jù)結(jié)構(gòu)仗考。在你的應(yīng)用程序里音同,可以定義Handler的子類(lèi)別來(lái)接收Looper所送出的消息。
好了秃嗜,下面是正文~