W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)者經(jīng)常需要在當(dāng)前線程中處理下載任務(wù)等較為耗時(shí)的操作,但是又不希望當(dāng)前的線程受到阻塞。此時(shí),就可以使用 EventHandler 機(jī)制。EventHandler 是 HarmonyOS 用于處理線程間通信的一種機(jī)制,可以通過(guò) [EventRunner] 創(chuàng)建新線程,將耗時(shí)的操作放到新線程上執(zhí)行。這樣既不阻塞原來(lái)的線程,任務(wù)又可以得到合理的處理。比如:主線程使用 EventHandler 創(chuàng)建子線程,子線程做耗時(shí)的下載圖片操作,下載完成后,子線程通過(guò) EventHandler 通知主線程,主線程再更新 UI。
EventRunner 是一種事件循環(huán)器,循環(huán)處理從該 EventRunner 創(chuàng)建的新線程的事件隊(duì)列中獲取 InnerEvent 事件或者 Runnable 任務(wù)。InnerEvent 是 EventHandler 投遞的事件。
EventHandler 是一種用戶(hù)在當(dāng)前線程上投遞 InnerEvent 事件或者 Runnable 任務(wù)到異步線程上處理的機(jī)制。每一個(gè) EventHandler 和指定的 EventRunner 所創(chuàng)建的新線程綁定,并且該新線程內(nèi)部有一個(gè)事件隊(duì)列。EventHandler 可以投遞指定的 InnerEvent 事件或 Runnable 任務(wù)到這個(gè)事件隊(duì)列。EventRunner 從事件隊(duì)列里循環(huán)地取出事件,如果取出的事件是 InnerEvent 事件,將在 EventRunner 所在線程執(zhí)行 processEvent 回調(diào);如果取出的事件是 Runnable 任務(wù),將在 EventRunner 所在線程執(zhí)行 Runnable 的 run 回調(diào)。一般,EventHandler 有兩個(gè)主要作用:
EventHandler 的運(yùn)作機(jī)制如下圖所示:
圖1 EventHandler 的運(yùn)作機(jī)制
使用 EventHandler 實(shí)現(xiàn)線程間通信的主要流程:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: