HarmoneyOS应用中每个进程都会有一个主线程,主线程有如下职责:
1.执行UI绘制
2.管理主线程的ArkTS引擎实例,使多个UIAbility组件能够运行在其之上
3.管理其他线程(例如Worker线程)的ArkTS引擎实例,例如启动和终止其他线程
4.分发交互事件
5.处理应用代码的回调,包括事件处理和生命周期管理
6.接收worker线程发送的消息
work类似iOS的async_disPatch,处理耗时任务的字线程
基于HarmonyOS的线程模型,不同的业务功能运行在不同的线程上,业务功能的交互就需要线程间通信。线程间通信目前主要有Emitter和Worker两种方式,其中Emitter主要适用于线程间的事件同步,worker主要用于新开一个线程执行耗时任务。
stage模型只提供了主线程和Work线程,Emitter主要用于主线程内或者主线程和Worker线程的事件同步
使用Emitter进行线程间通信
1先触发事件,eventId是用来区分触发的是哪一个回调函数callback
2.进行订阅
使用Worker进行线程间通信
worker是与主现场并行的独立线程,创建worker的线程被称为宿主线程,worker工作的线程被称为worker线程,通常在worker线程中处理耗时的操作,需要注意的是:worker中不能直接更新page,最多可以开启8个worker线程
开发步骤如下:
1.在工程的模块及build-profile.json5文件的buildOption属性中添加配置信息。
2.创建对应的worker.ts文件
监听work发送的消息,进行处理