事件机制

Emitter:跨线程通信核心工具

系统定位
Emitter是鸿蒙为开发者提供的 进程内线程间通信核心工具,基于发布-订阅模式实现,属于系统级能力[网页3][网页8]。

核心能力

支持设置事件优先级(如 IMMEDIATE、HIGH、LOW),控制事件处理顺序[网页8]。
可实现 主线程与 Worker 线程间通信,例如子线程完成计算后通知主线程更新 UI
需手动管理生命周期(在组件销毁时调用 off取消订阅)

EventHub:组件间通信框架

系统定位
EventHub是鸿蒙 Stage 模型中默认提供的 组件间通信框架,用于实现同一进程内组件解耦交互

核心能力

自动绑定组件生命周期,无需手动取消订阅
适用于常规业务组件通信,如父子组件或跨页面组件数据传递

后台服务

任务类型 适用场景 实现方式 代码示例 注意事项
短时任务 小文件下载、数据保存 backgroundTaskManager 接口 ts<br>let taskId = backgroundTaskManager.requestSuspendDelay(<br> '任务名', <br> () => console.log('任务超时')<br>);<br> • 单次最长3分钟
• 每日总配额10分钟
• 需主动调用cancelSuspendDelay取消
长时任务 音乐播放、导航、录音 continuousTask 接口 ts<br>continuousTask.startBackgroundRunning(<br> context, <br> BackgroundMode.AUDIO_PLAYBACK<br>);<br> • 需用户授权
• 需说明用途
• 应用市场审核严格
• 仅限特定场景使用
延迟任务 WiFi下数据同步、定时处理 workScheduler 接口 ts<br>workScheduler.schedule(context, {<br> networkType: NetworkType.NETWORK_WIFI,<br> repeatCount: 3<br>});<br> • 系统智能调度
• 单次最长2分钟
• 需在2分钟内完成
• 支持条件触发
代理提醒 定时任务、倒计时、提醒事项 reminderAgent 接口 ts<br>reminderAgent.publishReminder({<br> reminderType: ReminderType.REMINDER_TYPE_TIMER,<br> triggerTimeInSeconds: 3600<br>});<br> • 需关联应用跳转逻辑
• 最多100个提醒
• 需申请通知权限
• 系统统一管理
Worker线程 耗时计算、后台数据处理 worker.ThreadWorker ts<br>const myWorker = new worker.ThreadWorker(<br> 'workers/MyWorker.ts'<br>);<br>myWorker.postMessage('开始计算');<br> • 需独立文件存放逻辑
• 最大并发数8个
• 不能操作UI
• 需手动关闭
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐