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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

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

二、Handler的定義和機制

Android中Handler

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

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

HarmonyOS中EventHandler

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

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

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

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

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

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

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

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

編輯:hfy

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

    關注

    79

    文章

    1946

    瀏覽量

    29736
收藏 人收藏

    評論

    相關推薦

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

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

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

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

    HarmonyOS AI語音播報、朗讀輸入的文字內容

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

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

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

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

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

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

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

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

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

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

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

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

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

    基于HarmonyOS Player類實現(xiàn)的應用程序——Codelab技術

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

    華為開發(fā)者HarmonyOS零基礎入門:四步實現(xiàn)HarmonyOS應用

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

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

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

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

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

    HarmonyOS 的幾個自定義控件介紹

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

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

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