0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HarmonyOS中EventHandler的實(shí)現(xiàn)效果

鴻蒙系統(tǒng)HarmonyOS ? 來源:51CTO鴻蒙社區(qū) ? 作者:AnBetter2021 ? 2021-03-24 11:46 ? 次閱讀

一、HarmonyOS中EventHandler實(shí)現(xiàn)效果

二、Handler的定義和機(jī)制

Android中Handler

主要接受子線程發(fā)送的數(shù)據(jù), 并用此數(shù)據(jù)配合主線程更新UI。

描述:當(dāng)應(yīng)用程序啟動時,Android首先會開啟一個主線程 (也就是UI線程) , 主線程為管理界面中的UI控件, 進(jìn)行事件分發(fā), 比如說, 你要是點(diǎn)擊一個 Button ,Android會分發(fā)事件到Button上,來響應(yīng)你的操作。 如果此時需要一個耗時的操作,例如: 聯(lián)網(wǎng)讀取數(shù)據(jù), 或者讀取本地較大的一個文件的時候,你不能把這些操作放在主線程中,如果你放在主線程中的話,界面會出現(xiàn)假死現(xiàn)象, 如果5秒鐘還沒有完成的話,會收到Android系統(tǒng)的一個錯誤提示 "強(qiáng)制關(guān)閉"。 這個時候我們需要把這些耗時的操作,放在一個子線程中,因?yàn)樽泳€程涉及到UI更新,,Android主線程是線程不安全的, 也就是說,更新UI只能在主線程中更新,子線程中操作是危險的。 這個時候,Handler就出現(xiàn)了。,來解決這個復(fù)雜的問題 ,由于Handler運(yùn)行在主線程中(UI線程中), 它與子線程可以通過Message對象來傳遞數(shù)據(jù), 這個時候,Handler就承擔(dān)著接受子線程傳過來的(子線程用sedMessage()方法傳弟)Message對象,(里面包含數(shù)據(jù)) , 把這些消息放入主線程隊(duì)列中,配合主線程進(jìn)行更新UI。

HarmonyOS中EventHandler

在開發(fā)過程中,開發(fā)者經(jīng)常需要在當(dāng)前線程中處理下載任務(wù)等較為耗時的操作,但是又不希望當(dāng)前的線程受到阻塞。此時,就可以使用EventHandler機(jī)制。EventHandler是HarmonyOS用于處理線程間通信的一種機(jī)制,可以通過EventRunner創(chuàng)建新線程,將耗時的操作放到新線程上執(zhí)行。這樣既不阻塞原來的線程,任務(wù)又可以得到合理的處理。比如:主線程使用EventHandler創(chuàng)建子線程,子線程做耗時的下載圖片操作,下載完成后,子線程通過EventHandler通知主線程,主線程再更新UI。

描述:EventRunner是一種事件循環(huán)器,循環(huán)處理從該EventRunner創(chuàng)建的新線程的事件隊(duì)列中獲取InnerEvent事件或者Runnable任務(wù)。InnerEvent是EventHandler投遞的事件。EventHandler是一種用戶在當(dāng)前線程上投遞InnerEvent事件或者Runnable任務(wù)到異步線程上處理的機(jī)制。每一個EventHandler和指定的EventRunner所創(chuàng)建的新線程綁定,并且該新線程內(nèi)部有一個事件隊(duì)列。EventHandler可以投遞指定的InnerEvent事件或Runnable任務(wù)到這個事件隊(duì)列。EventRunner從事件隊(duì)列里循環(huán)地取出事件,如果取出的事件是InnerEvent事件,將在EventRunner所在線程執(zhí)行processEvent回調(diào);如果取出的事件是Runnable任務(wù),將在EventRunner所在線程執(zhí)行Runnable的run回調(diào)。

三、HarmonyOS中EventHandler的實(shí)現(xiàn)

-EventHandler使用來線程間通信的,創(chuàng)建EventHandler必須要先創(chuàng)建EventRunner,EventRunner.current()獲取主線程即UI線程

//獲取當(dāng)前主線程的EventRunner,用來存放事件隊(duì)列,
EventRunner eventRunner=EventRunner.current();

-在進(jìn)行線程間通信的時候,EventHandler只能和EventRunner所創(chuàng)建的線程進(jìn)行綁定,EventRunner創(chuàng)建時需要判斷是否創(chuàng)建成功,只有確保獲取的EventRunner實(shí)例非空時,才可以使用EventHandler綁定EventRunner。

//handler必須綁定eventrunner
EventHandler handler=new EventHandler(eventRunner);

-一個EventHandler只能同時與一個EventRunner綁定,一個EventRunner上可以創(chuàng)建多個EventHandler。

編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    1975

    瀏覽量

    30201
收藏 人收藏

    評論

    相關(guān)推薦

    LabVIEW圖像濾波Vi以及實(shí)現(xiàn)效果如何實(shí)現(xiàn)

    新手求助?。?!LabVIEW圖像濾波Vi以及實(shí)現(xiàn)效果如何實(shí)現(xiàn),能提供子Vi最好先謝謝大神
    發(fā)表于 01-11 22:58

    #HarmonyOS征文#HarmonyOS實(shí)戰(zhàn)—實(shí)現(xiàn)跑馬燈效果

    ) {//開啟跑馬燈效果//兩種方式獲取文本的對象//1.方法的參數(shù),參數(shù)表示被點(diǎn)擊組件的對象//2.可以把 onStart 方法的Text對象,挪到成員位置//使用第一種方法實(shí)現(xiàn)://先強(qiáng)轉(zhuǎn),因?yàn)殚_啟跑馬燈
    發(fā)表于 08-13 17:27

    HarmonyOS AI語音播報、朗讀輸入的文字內(nèi)容

    is false"); } }4. 計時器和線程間通信EventHandlerHarmonyOS用于處理線程間通信的一種機(jī)制,在開發(fā)過程,開發(fā)者經(jīng)常需要處理較為耗時的操作,但是又不希望當(dāng)前的線程
    發(fā)表于 09-24 16:22

    講解一下HarmonyOS的幾個自定義組件用到的知識

    看下 DrawTask 的描述:在項(xiàng)目開發(fā),我們經(jīng)常會用到自定義組件,此處分享一下 HarmonyOS JS 如何利用 canvas 實(shí)現(xiàn)自定義組件之可拖拽圓形進(jìn)度條。
    發(fā)表于 03-16 16:05

    【組件資料】HarmonyOS三方件開發(fā)指南

    顯示。1.2.模擬器上運(yùn)行效果:2、HarmonyOS三方件開發(fā)指南——AsyncHttpHarmony組件1.AsyncHttpHarmony功能介紹1.1.組件介紹在做HarmonyOS開發(fā)過程
    發(fā)表于 03-21 11:18

    HarmonyOSEventHandler實(shí)現(xiàn)步驟解析

    一、HarmonyOSEventHandler實(shí)現(xiàn)效果二、Handler的定義和機(jī)制Android
    發(fā)表于 03-23 14:30

    基于HarmonyOS實(shí)現(xiàn)的電池充電動畫效果

    最近在學(xué)習(xí)HarmonyOS開發(fā)文檔,發(fā)現(xiàn)transform樣式動畫感覺很有趣,用現(xiàn)有的方法寫一個會動的充電效果。實(shí)現(xiàn)過程一、 繪制電池輪廓首先我們使用css畫電池,繪制一個長方形需要給這個正方形
    發(fā)表于 03-28 12:02

    HarmonyOS原子化服務(wù)案例分享-馬仕健專輯

    一、案例說明本HarmonyOS應(yīng)用服務(wù)主要為個人音樂專輯的形式。實(shí)現(xiàn)了卡片進(jìn)行歌曲播放、切換與更新。我們設(shè)計開發(fā)了微、小、、大卡四種方式。原子化服務(wù)為歌曲列表和數(shù)據(jù)承載頁面。本應(yīng)用服務(wù)通過一套
    發(fā)表于 07-18 16:05

    HarmonyOS實(shí)現(xiàn)幾種常見圖片點(diǎn)擊效果

    一. 樣例介紹 HarmonyOS提供了常用的圖片、圖片幀動畫播放器組件,開發(fā)者可以根據(jù)實(shí)際場景和開發(fā)需求,實(shí)現(xiàn)不同的界面交互效果,包括:點(diǎn)擊陰影效果、點(diǎn)擊切換狀態(tài)、點(diǎn)擊動畫
    發(fā)表于 09-07 15:50

    基于HarmonyOS Player類實(shí)現(xiàn)的應(yīng)用程序——Codelab技術(shù)

    的編寫,再到編譯構(gòu)建、部署和運(yùn)行全過程。 您將構(gòu)建一個基于HarmonyOS?Player類實(shí)現(xiàn)的應(yīng)用程序,該應(yīng)用程序功能為播放本地視頻資源或從Internet獲得的視頻資源。效果圖如下: 您將會學(xué)到什么 ●?如何使用Playe
    的頭像 發(fā)表于 03-17 15:59 ?1979次閱讀

    華為開發(fā)者HarmonyOS零基礎(chǔ)入門:四步實(shí)現(xiàn)HarmonyOS應(yīng)用

    華為開發(fā)者HarmonyOS零基礎(chǔ)入門:四步實(shí)現(xiàn)HarmonyOS應(yīng)用,可以自定義主鍵實(shí)際應(yīng)用在開發(fā)者界面。
    的頭像 發(fā)表于 10-23 10:05 ?1949次閱讀
    華為開發(fā)者<b class='flag-5'>HarmonyOS</b>零基礎(chǔ)入門:四步<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>HarmonyOS</b>應(yīng)用

    華為開發(fā)者HarmonyOS零基礎(chǔ)入門:Word圖片資源支持預(yù)覽效果

    華為開發(fā)者HarmonyOS零基礎(chǔ)入門:Word圖片資源支持預(yù)覽效果,list主鍵函數(shù)可以做布局,呈現(xiàn)多個堆疊顯示效果。
    的頭像 發(fā)表于 10-23 10:12 ?1504次閱讀
    華為開發(fā)者<b class='flag-5'>HarmonyOS</b>零基礎(chǔ)入門:Word圖片資源支持預(yù)覽<b class='flag-5'>效果</b>

    零基礎(chǔ)入門HarmonyOS-部分卡片模板效果展示

    零基礎(chǔ)入門HarmonyOS-部分卡片模板效果展示
    的頭像 發(fā)表于 10-23 11:51 ?1200次閱讀
    零基礎(chǔ)入門<b class='flag-5'>HarmonyOS</b>-部分卡片模板<b class='flag-5'>效果</b>展示

    HarmonyOS 的幾個自定義控件介紹

    HarmonyOS 開發(fā)自定義組件目前還不是很豐富,在開發(fā)過程中常常會有一些特殊效果的組件,這就需要我們額外花一些時間實(shí)現(xiàn)。
    的頭像 發(fā)表于 01-04 13:49 ?2248次閱讀

    基于HarmonyOS實(shí)現(xiàn)簡單的滾動視差布局

    簡單的滾動視差布局演示,通過HarmonyOS的測量、布局、觸摸事件實(shí)現(xiàn)。
    發(fā)表于 03-21 09:50 ?1次下載