鸿蒙开发入坑篇(十二):通知与后台任务 (Notifications)

可以体验下鸿蒙Ai:CodeArts Doer代码智能体

🔗 项目地址https://github.com/briefness/HarmonyDemo
更新说明 :本文将解析 IPC 通信系统代理服务,阐述通知与后台任务的机制。

一、理论基础:IPC 与 代理服务

1.1 跨进程通信 (IPC)

当调用 notificationManager.publish() 时,并非直接在 App 进程中绘制弹窗。
IPC/Binder
校验权限
通知渲染
绘制
App 进程
通知管理服务 (系统进程)
SystemUI 进程
通知栏/横幅

底层执行了跨进程通信 (IPC):

  1. App 进程: 序列化通知数据 (NotificationRequest),通过 Binder 驱动发送给系统服务。
  2. NotificationManagerService (NMS): 系统进程收到请求,校验权限。
  3. SystemUI: NMS 通知 SystemUI 进程渲染通知栏。

1.2 代理服务 (Proxy Service)

对于 代理提醒 (ReminderAgent),原理更进一步。

  • 应用将任务委托给系统。
  • ReminderService 是常驻内存的系统服务。即使应用进程被回收,系统服务仍会准时触发提醒。
  • 系统服务会负责唤醒设备、播放铃声,并拉起应用(如果配置了 WantAgent)。

二、通知 (NotificationKit)

2.1 核心要素

  1. Content: 通知的 UI 载体。
  2. Slot (通道) : 决定通知的干扰程度。
    • SOCIAL: 社交消息(有声、震动)。
    • SERVICE: 后台服务(静音)。
    • OTHER: 其他推广(静音、折叠)。

2.2 WantAgent (点击意图)

WantAgent 是一个被系统持有的"延迟执行意图"。

它本质上是一个序列化的 Action,可以在未来某个时刻(如用户点击通知时)由 AMS (AbilityManagerService) 触发。
用户 NotificationService (NMS) AbilityManagerService (AMS) App 用户 NotificationService (NMS) AbilityManagerService (AMS) App 创建 WantAgent (意图) 返回 Token 发布通知 (带 Token) 点击通知 触发 Token 启动 Ability (唤醒应用)

三、后台任务 (Background Tasks)

系统默认采用 冻结策略:App 切后台几秒后,JS 线程挂起,定时器停止。

3.1 短时任务 (Transient Task)

向系统申请临时后台运行时间。

typescript 复制代码
let delayId = backgroundTaskManager.requestSuspendDelay('reason', () => {
  // 超时回调:任务未完成,保存进度并清理
});

3.2 长时任务 (Continuous Task)

必须绑定一个 NOTIFICATION_ID

这也体现了前台服务 (Foreground Service) 的设计逻辑:用户必须知情。后台运行必须在通知栏体现。

四、总结

传统的保活机制在 HarmonyOS 上不再适用。

  • IPC 机制 决定了通知由系统接管。
  • 代理机制 决定了定时任务不需要应用存活。

建议使用 ReminderAgentWorkScheduler 实现相关功能。

下一篇,将进入混合开发的领域:Web 组件与 JSBridge

相关推荐
御承扬4 小时前
鸿蒙NDK UI之文本自定义样式
ui·华为·harmonyos·鸿蒙ndk ui
前端不太难4 小时前
HarmonyOS 游戏上线前必做的 7 类极端场景测试
游戏·状态模式·harmonyos
大雷神5 小时前
HarmonyOS智慧农业管理应用开发教程--高高种地--第29篇:数据管理与备份
华为·harmonyos
讯方洋哥5 小时前
HarmonyOS App开发——关系型数据库应用App开发
数据库·harmonyos
巴德鸟6 小时前
华为手机鸿蒙4回退到鸿蒙3到鸿蒙2再回退到EMUI11 最后关闭系统更新
华为·智能手机·harmonyos·降级·升级·回退·emui
一起养小猫6 小时前
Flutter for OpenHarmony 实战_魔方应用UI设计与交互优化
flutter·ui·交互·harmonyos
一只大侠的侠7 小时前
Flutter开源鸿蒙跨平台训练营 Day7Flutter+ArkTS双方案实现轮播图+搜索框+导航组件
flutter·开源·harmonyos
那就回到过去7 小时前
VRRP协议
网络·华为·智能路由器·ensp·vrrp协议·网络hcip
相思难忘成疾7 小时前
通向HCIP之路:第四步:边界网关路由协议—BGP(概念、配置、特点、常见问题及其解决方案)
网络·华为·hcip
一只大侠的侠7 小时前
Flutter开源鸿蒙跨平台训练营 Day9分类数据的获取与渲染实现
flutter·开源·harmonyos