一、UIAbility组件是什么?
UIAbility组件:一种包含UI的应用组件,主要用于和用户交互。
通常我们在使用IDE新创建一个项目的时候会在项目目录下自动生成一个持有UIAbility
组件的model作为应用程序的主模块。如下图所示:
二、ExtensionAbility组件是什么?
ExtensionAbility组件:是基于特定场景(例如服务卡片、输入法等)提供的应用组件。每一个ExtensionAbilityType
,开发者只能使用系统已定义的类型。各类型的ExtensionAbility
组件均由相应的系统服务统一管理。
- 如下表列举了一些常见的ExtensionAbility 类型:
ExtensionAbility 类型 | 描述 | 对应的系统服务 |
---|---|---|
Service Extension | 提供后台服务,如音乐播放、文件下载等 | Service Manager |
Data Ability | 用于数据存储和访问,可以是本地数据库或网络数据源 | Data Manager |
Form Extension | 提供小型、可更新的信息展示,通常显示在桌面或其他应用中 | Form Manager |
Input Method Extension | 提供输入方法,如键盘、语音输入等 | Input Method Framework (IMF) |
Wallpaper Extension | 提供动态或静态壁纸 | Wallpaper Service |
Notification Extension | 用于自定义通知的外观和行为 | Notification Service |
Search Extension | 提供搜索功能,允许用户在应用内或跨应用搜索信息 | Search Service |
Shortcut Extension | 提供快捷方式,让用户能够快速访问应用的功能或内容 | Shortcut Manager |
Share Extension | 允许用户分享内容到其他应用或服务 | Share Service |
-
在IDE中支持选中Module后创建不同类型的ExtensionAbility组件文件,如下图所示
-
选中包含UIAbility组件或者ExtensionAbility组件的Module可以单独运行,该类型的Module运行时会编译生成一个.HAP文件,这里的
.HAP文件
就是常说的HAp
,如下图所示:
三、HAP是什么?
简单理解:HAP是一个应用安装的基本单位。需要注意的是一个app应用可以包含一个或者多个HAP。
HAP(HarmonyOS Ability Package)是鸿蒙操作系统(HarmonyOS)中的应用包格式。HAP 文件是鸿蒙应用的基本单位,类似于 Android 中的 APK 文件。HAP 文件包含了应用的所有资源、代码和配置文件,用于在鸿蒙设备上安装和运行应用。
(一)、HAP 的主要组成部分如下:
-
配置文件(config.json):
- 包含应用的基本信息,如应用名称、版本号、应用图标等。
- 定义了应用的能力(Abilities),包括 UIAbility 和 ExtensionAbility。
- 指定了应用的权限和依赖项。
-
资源文件(resources):
- 包含应用的媒体资源,如图片、音频、视频等。
- 包含布局文件、字符串资源、样式资源等。
-
代码文件(entry/src/main):
- 包含应用的 Java 或 JavaScript 代码。
- 定义了应用的逻辑和业务功能。
-
库文件(libs):
- 包含应用依赖的第三方库和框架。
-
签名文件(签名证书):
- 用于验证应用的来源和完整性,确保应用的安全性。
(二)、HAP 的类型
-
主 HAP(Main HAP):
- 包含应用的主要功能和资源。
- 每个应用必须有一个主 HAP。
-
功能 HAP(Feature HAP):
- 包含应用的特定功能模块,可以按需加载。
- 功能 HAP 可以独立于主 HAP 存在,也可以与其他功能 HAP 一起打包。
(三)、HAP 的优势
-
模块化设计:
- 支持应用的模块化开发,可以将复杂的应用拆分为多个功能模块,便于维护和扩展。
- 功能 HAP 可以按需加载,提高应用的启动速度和资源利用率。
-
跨设备适配:
- 鸿蒙操作系统支持多种设备形态,HAP 可以根据不同的设备类型和屏幕尺寸进行适配,提供一致的用户体验。
-
安全性和可靠性:
- 通过签名机制确保应用的来源和完整性,提高应用的安全性。
- 系统会对 HAP 进行严格的验证和管理,确保应用的可靠运行。
四、AbilityStage是什么?
AbilityStage是Module级别的组件容器,与HAP是一一对应的关系。
AbilityStage
是鸿蒙操作系统(HarmonyOS)中一个重要的生命周期管理类,用于管理应用的全局生命周期和多个 Ability
组件的生命周期。它是应用的入口点,类似于 Android 中的 Application
类。通过 AbilityStage
,开发者可以实现应用级别的初始化、资源管理和全局事件监听等功能。
(一)、主要功能
-
全局生命周期管理:
onCreate()
:当应用首次启动时调用,可以在这里进行全局初始化操作。onTerminate()
:当应用即将终止时调用,可以在这里进行资源释放等操作。onBackground()
:当应用进入后台时调用,可以在这里执行一些后台处理逻辑。onForeground()
:当应用从后台回到前台时调用,可以在这里恢复一些前台所需的资源或状态。
-
管理多个
Ability
组件:onAbilityConnectDone(Context context, Intent intent, IRemoteObject remote)
:当Ability
连接成功时调用。onAbilityDisconnectDone(Context context, Intent intent)
:当Ability
断开连接时调用。onAbilityCommand(Context context, Intent intent, int startId)
:当Ability
接收到命令时调用。
-
资源管理:
- 可以在
onCreate()
和onTerminate()
方法中进行全局资源的初始化和释放,例如网络连接、数据库初始化等。
- 可以在
(二)、以下是一个简单的 AbilityStage
实现示例:
java
import ohos.aafwk.ability.AbilityStage;
import ohos.aafwk.content.Intent;
public class MyAbilityStage extends AbilityStage {
@Override
public void onCreate() {
super.onCreate();
// 应用初始化操作
System.out.println("MyAbilityStage onCreate");
}
@Override
public void onTerminate() {
super.onTerminate();
// 应用终止前的资源释放操作
System.out.println("MyAbilityStage onTerminate");
}
@Override
public void onBackground() {
super.onBackground();
// 应用进入后台时的操作
System.out.println("MyAbilityStage onBackground");
}
@Override
public void onForeground() {
super.onForeground();
// 应用从后台回到前台时的操作
System.out.println("MyAbilityStage onForeground");
}
@Override
public void onAbilityConnectDone(Context context, Intent intent, IRemoteObject remote) {
super.onAbilityConnectDone(context, intent, remote);
// Ability 连接成功时的操作
System.out.println("MyAbilityStage onAbilityConnectDone");
}
@Override
public void onAbilityDisconnectDone(Context context, Intent intent) {
super.onAbilityDisconnectDone(context, intent);
// Ability 断开连接时的操作
System.out.println("MyAbilityStage onAbilityDisconnectDone");
}
@Override
public void onAbilityCommand(Context context, Intent intent, int startId) {
super.onAbilityCommand(context, intent, startId);
// Ability 接收到命令时的操作
System.out.println("MyAbilityStage onAbilityCommand");
}
}
(三)、使用场景
- 全局初始化:在应用启动时进行全局配置和资源初始化。
- 资源管理:管理应用级别的资源,如网络连接、数据库等。
- 生命周期管理:监控应用的生命周期变化,执行相应的操作。
- 跨
Ability
协同 :协调多个Ability
之间的通信和协作。
通过 AbilityStage
,开发者可以更好地管理和控制应用的全局行为,确保应用在不同状态下的稳定性和性能。