鸿蒙Harmony和Android应用组件对比
在Android开发中,有我们熟知的四大组件,
activity、service、content provider、broadcast receiver。 而在harmony中,则抽象为 Ability ,
分为FA(Feature Ability)和PA(Particle Ability)两种类型:
- FA支持Page Ability:Page模板是FA唯一支持的模板,用于提供与用户交互的能力。(类同于Android的Activity)
- PA支持Service Ability和Data Ability:Service模板用于提供后台运行任务的能力;Data模板用于对外部提供统一的数据访问抽象。(
Service模板 类似于Android 的Service,
Data模板 类似于Android的
content provider )
在Android开发中,用Broadcast Receiver并不是非常多,更多是用EventBus等消息框架,在harmony设计中,也是借鉴EventsBus等消息框架的思想。
HarmonyOS通过CES(Common Event Service,公共事件服务)为应用程序提供订阅、发布、退订公共事件的能力,通过ANS(Advanced Notification Service,即通知增强服务)系统服务来为应用程序提供发布通知的能力。
- 公共事件可分为系统公共事件和自定义公共事件。
- 系统公共事件:系统将收集到的事件信息,根据系统策略发送给订阅该事件的用户程序。 例如:用户可感知亮灭屏事件,系统关键服务发布的系统事件(例如:USB插拔,网络连接,系统升级等)。
- 自定义公共事件:应用自定义一些公共事件用来处理业务逻辑。
- 通知提供应用的即时消息或通信消息,用户可以直接删除或点击通知触发进一步的操作。
- IntentAgent封装了一个指定行为的Intent,可以通过IntentAgent启动Ability和发布公共事件。
应用如果需要接收公共事件,需要订阅相应的事件。
约束与限制
公共事件的约束与限制
- 目前公共事件仅支持动态订阅。部分系统事件需要具有指定的权限,具体的权限见API参考。
- 目前公共事件订阅不支持多用户。
- ThreadMode表示线程模型,目前仅支持HANDLER模式,即在当前UI线程上执行回调函数。
- deviceId用来指定订阅本地公共事件还是远端公共事件。deviceId为null、空字符串或本地设备deviceId时,表示订阅本地公共事件,否则表示订阅远端公共事件。
通知的约束与限制
- 通知目前支持六种样式:普通文本、长文本、图片、社交、多行文本和媒体样式。创建通知时必须包含一种样式。
- 通知支持快捷回复。
IntentAgent的限制
使用IntentAgent启动Ability时,Intent必须指定Ability的包名和类名。