与 Android Activity 相比,Activity 是 Android 应用的四大组件之一, 它提供一个窗口用于应用在其中绘制界面,用户可以在界面上完成交互动作。

关于 Ability
HarmonyOS Ability 是应用所具备能力的抽象。Ability 的中文含义即能力,代表了 HarmonyOS 工程中最重要最核心的功能,也是应用程序的原子化基础组件。
一个 HarmonyOS 应用可以包含多个 Ability,Ability 可以分为:
Feature Ability(简称 FA),有界面,也被称为元程序
Particle Ability(简称 PA),无界面,也被称为元服务
FA 类似于 Android 的 Activity ;PA 类似于 Android 的 Services。
Service 模板:用于提供后台运行任务的能力,提供应用服务,例如播放音乐等。
Data 模板:用于对外部提供统一的数据访问抽象,提供了统一的数据访问接口,方便 FA 的统一调用,例如对本地文件的读取。
在配置文件(config.json)中注册 Ability 时,可以通过配置 Ability 元素中的 “type” 属性来指定 Ability 模板类型,示例如下:
{
"module": {
...
"abilities": [
{
...
"type": "page"
...
}
]
...
}
...
}

②Page Ability 的生命周期
PageAbility 类型的 Ability 生命周期流转如下图所示:

首先初始化 Ability,初始化完毕后状态是 INITIAL 状态
初始化完成后, 会调用 onStart() 方法,初始化 UI 界面中使用到的控件和变量, 执行完毕后状态变为 INACTIVE 状态
快要显示时,会调用 onActive() 方法,状态变为 ACTIVE 状态
如果由于某些原因,该 Page Ability 失去焦点,进入后台,如弹出对话框,另一个 Page Ability 前台显示,会回调 onInactive() 方法,状态变为 INACTIVE 状态
窗口彻底不显示,但是还处于后台状态,会回调 onBackground() 方法,状态变 BACKGROUND 状态
如果当前处于 INACTIVE 状态,用户返回 Page Ability,则回调 onActive() 方法,进入 ACTIVE 状态
如果当前的 Page Ability 处于 BACKGROUND 状态,当用户从后台返回前台时, 会回调 onForeground() 方法,状态变为 INACTIVE 状态
如果当前的 Page Ability 处于 BACKGROUND 状态,当该 Ability 彻底销毁,正在结束,因内存不足终止,用户重新进入该界面时,会回调 onStop() 方法,状态变为 INITIAL 状态
生命周期图如下:

③Service Ability
④sevice ability 生命周期
与 Page 类似,Service 也拥有生命周期,如图所示:

启动 Service:该 Service 在其他 Ability 调用startAbility()时创建,然后保持运行。其他 Ability 通过调用stopAbility()来停止 Service,Service 停止后,系统会将其销毁。
连接 Service:该 Service 在其他 Ability 调用 connectAbility() 时创建,客户端可通过调用 disconnectAbility() 断开连接。多个客户端可以绑定到相同 Service,而且当所有绑定全部取消后,系统即会销毁该 Service。
connectAbility() 也可以连接通过 startAbility() 创建的 Service 。在配置文件中,“module > abilities”字段下对当前 Service 做如下配置:
{
"module": {
...
"abilities": [
{
...
"name": ".ServiceAbility",
"type": "service",
"visible": true,
...
}
]
...
}
...
}
⑤Data Ability
⑥URI 介绍
URI 的组成图如下:

scheme:协议方案名,固定为“dataability”,代表 Data Ability 所使用的协议类型。
authority:设备 ID。如果为跨设备场景,则为目标设备的 ID;如果为本地设备场景,则不需要填写。
path:资源的路径信息,代表特定资源的位置信息。
query:查询参数。
fragment:可以用于指示要访问的子资源。

URI 示例:
跨设备场景:
dataability://device_id/com.domainname.dataability.persondata/person/10
本地设备:
dataability:///com.domainname.dataability.persondata/person/10
在配置文件中,“module > abilities”字段下对当前 Data 做如下配置:
{
"module": {
...
"abilities": [
{
...
"type": "data"
...
}
]
...
}
...
}
总结
代码SHOW出你的爱,扫码参加

👇 扫码报名下周三的鸿蒙直播课 👇


求分享

求点赞

求在看




