安卓开发者自学鸿蒙开发5其他
·
事件机制
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 • 需手动关闭 |
更多推荐

所有评论(0)