0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HarmonyOS中EventHandler的实现效果

鸿蒙系统HarmonyOS 来源:51CTO鸿蒙社区 作者:AnBetter2021 2021-03-24 11:46 次阅读

一、HarmonyOS中EventHandler实现效果

二、Handler的定义和机制

Android中Handler

主要接受子线程发送的数据, 并用此数据配合主线程更新UI。

描述:当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件, 进行事件分发, 比如说, 你要是点击一个 Button ,Android会分发事件到Button上,来响应你的操作。 如果此时需要一个耗时的操作,例如: 联网读取数据, 或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,如果你放在主线程中的话,界面会出现假死现象, 如果5秒钟还没有完成的话,会收到Android系统的一个错误提示 "强制关闭"。 这个时候我们需要把这些耗时的操作,放在一个子线程中,因为子线程涉及到UI更新,,Android主线程是线程不安全的, 也就是说,更新UI只能在主线程中更新,子线程中操作是危险的。 这个时候,Handler就出现了。,来解决这个复杂的问题 ,由于Handler运行在主线程中(UI线程中), 它与子线程可以通过Message对象来传递数据, 这个时候,Handler就承担着接受子线程传过来的(子线程用sedMessage()方法传弟)Message对象,(里面包含数据) , 把这些消息放入主线程队列中,配合主线程进行更新UI。

HarmonyOS中EventHandler

在开发过程中,开发者经常需要在当前线程中处理下载任务等较为耗时的操作,但是又不希望当前的线程受到阻塞。此时,就可以使用EventHandler机制。EventHandler是HarmonyOS用于处理线程间通信的一种机制,可以通过EventRunner创建新线程,将耗时的操作放到新线程上执行。这样既不阻塞原来的线程,任务又可以得到合理的处理。比如:主线程使用EventHandler创建子线程,子线程做耗时的下载图片操作,下载完成后,子线程通过EventHandler通知主线程,主线程再更新UI。

描述:EventRunner是一种事件循环器,循环处理从该EventRunner创建的新线程的事件队列中获取InnerEvent事件或者Runnable任务。InnerEvent是EventHandler投递的事件。EventHandler是一种用户在当前线程上投递InnerEvent事件或者Runnable任务到异步线程上处理的机制。每一个EventHandler和指定的EventRunner所创建的新线程绑定,并且该新线程内部有一个事件队列。EventHandler可以投递指定的InnerEvent事件或Runnable任务到这个事件队列。EventRunner从事件队列里循环地取出事件,如果取出的事件是InnerEvent事件,将在EventRunner所在线程执行processEvent回调;如果取出的事件是Runnable任务,将在EventRunner所在线程执行Runnable的run回调。

三、HarmonyOS中EventHandler的实现

-EventHandler使用来线程间通信的,创建EventHandler必须要先创建EventRunner,EventRunner.current()获取主线程即UI线程

//获取当前主线程的EventRunner,用来存放事件队列,
EventRunner eventRunner=EventRunner.current();

-在进行线程间通信的时候,EventHandler只能和EventRunner所创建的线程进行绑定,EventRunner创建时需要判断是否创建成功,只有确保获取的EventRunner实例非空时,才可以使用EventHandler绑定EventRunner。

//handler必须绑定eventrunner
EventHandler handler=new EventHandler(eventRunner);

-一个EventHandler只能同时与一个EventRunner绑定,一个EventRunner上可以创建多个EventHandler。

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • HarmonyOS
    +关注

    关注

    79

    文章

    1839

    浏览量

    29261
收藏 人收藏

    评论

    相关推荐

    LabVIEW图像滤波Vi以及实现效果如何实现

    新手求助!!!LabVIEW图像滤波Vi以及实现效果如何实现,能提供子Vi最好先谢谢大神
    发表于 01-11 22:58

    HarmonyOS HiSpark AI Camera】基于HarmonyOS 重构第三方3A算法

    ,拥有在海思的平台上实现自研3A算法的经验,对NNIE比较了解,在3559A上实现了视频会议系统的目标跟踪算法并落地。2.开发计划:a.基于海思的HarmonyOS 重构以前开发的3
    发表于 09-25 10:11

    #HarmonyOS征文#HarmonyOS实战—实现跑马灯效果

    ) {//开启跑马灯效果//两种方式获取文本的对象//1.方法的参数,参数表示被点击组件的对象//2.可以把 onStart 方法的Text对象,挪到成员位置//使用第一种方法实现://先强转,因为开启跑马灯
    发表于 08-13 17:27

    基于HarmonyOS编解码能力,实现Camera实时预览流的播放

    , cameraStateCallback, eventHandler); captureInit(); } }5. YUV编码使用HarmonyOS编码器Codec对Camera获取的视频YUV数据进行编码,步骤如下
    发表于 09-17 10:56

    HarmonyOS AI语音播报、朗读输入的文字内容

    is false"); } }4. 计时器和线程间通信EventHandlerHarmonyOS用于处理线程间通信的一种机制,在开发过程,开发者经常需要处理较为耗时的操作,但是又不希望当前的线程
    发表于 09-24 16:22

    讲解一下HarmonyOS的几个自定义组件用到的知识

    看下 DrawTask 的描述:在项目开发,我们经常会用到自定义组件,此处分享一下 HarmonyOS JS 如何利用 canvas 实现自定义组件之可拖拽圆形进度条。
    发表于 03-16 16:05

    【组件资料】HarmonyOS三方件开发指南

    显示。1.2.模拟器上运行效果:2、HarmonyOS三方件开发指南——AsyncHttpHarmony组件1.AsyncHttpHarmony功能介绍1.1.组件介绍在做HarmonyOS开发过程
    发表于 03-21 11:18

    HarmonyOSEventHandler实现步骤解析

    一、HarmonyOSEventHandler实现效果二、Handler的定义和机制Android
    发表于 03-23 14:30

    基于HarmonyOS实现的电池充电动画效果

    最近在学习HarmonyOS开发文档,发现transform样式动画感觉很有趣,用现有的方法写一个会动的充电效果实现过程一、 绘制电池轮廓首先我们使用css画电池,绘制一个长方形需要给这个正方形
    发表于 03-28 12:02

    HarmonyOS原子化服务案例分享-马仕健专辑

    一、案例说明本HarmonyOS应用服务主要为个人音乐专辑的形式。实现了卡片进行歌曲播放、切换与更新。我们设计开发了微、小、、大卡四种方式。原子化服务为歌曲列表和数据承载页面。本应用服务通过一套
    发表于 07-18 16:05

    HarmonyOS实现几种常见图片点击效果

    一. 样例介绍 HarmonyOS提供了常用的图片、图片帧动画播放器组件,开发者可以根据实际场景和开发需求,实现不同的界面交互效果,包括:点击阴影效果、点击切换状态、点击动画
    发表于 09-07 15:50

    基于HarmonyOS Player类实现的应用程序——Codelab技术

    的编写,再到编译构建、部署和运行全过程。 您将构建一个基于HarmonyOS Player类实现的应用程序,该应用程序功能为播放本地视频资源或从Internet获得的视频资源。效果图如下: 您将会学到什么 ● 如何使用Playe
    的头像 发表于 03-17 15:59 1706次阅读

    华为开发者HarmonyOS零基础入门:四步实现HarmonyOS应用

    华为开发者HarmonyOS零基础入门:四步实现HarmonyOS应用,可以自定义主键实际应用在开发者界面。
    的头像 发表于 10-23 10:05 1728次阅读
    华为开发者<b class='flag-5'>HarmonyOS</b>零基础入门:四步<b class='flag-5'>实现</b><b class='flag-5'>HarmonyOS</b>应用

    华为开发者HarmonyOS零基础入门:Word图片资源支持预览效果

    华为开发者HarmonyOS零基础入门:Word图片资源支持预览效果,list主键函数可以做布局,呈现多个堆叠显示效果
    的头像 发表于 10-23 10:12 1205次阅读
    华为开发者<b class='flag-5'>HarmonyOS</b>零基础入门:Word图片资源支持预览<b class='flag-5'>效果</b>

    零基础入门HarmonyOS-部分卡片模板效果展示

    零基础入门HarmonyOS-部分卡片模板效果展示
    的头像 发表于 10-23 11:51 978次阅读
    零基础入门<b class='flag-5'>HarmonyOS</b>-部分卡片模板<b class='flag-5'>效果</b>展示