UIAbility相关的基础知识概念介绍

一、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 的主要组成部分如下:

  1. 配置文件(config.json)

    • 包含应用的基本信息,如应用名称、版本号、应用图标等。
    • 定义了应用的能力(Abilities),包括 UIAbility 和 ExtensionAbility。
    • 指定了应用的权限和依赖项。
  2. 资源文件(resources)

    • 包含应用的媒体资源,如图片、音频、视频等。
    • 包含布局文件、字符串资源、样式资源等。
  3. 代码文件(entry/src/main)

    • 包含应用的 Java 或 JavaScript 代码。
    • 定义了应用的逻辑和业务功能。
  4. 库文件(libs)

    • 包含应用依赖的第三方库和框架。
  5. 签名文件(签名证书)

    • 用于验证应用的来源和完整性,确保应用的安全性。

(二)、HAP 的类型

  1. 主 HAP(Main HAP)

    • 包含应用的主要功能和资源。
    • 每个应用必须有一个主 HAP。
  2. 功能 HAP(Feature HAP)

    • 包含应用的特定功能模块,可以按需加载。
    • 功能 HAP 可以独立于主 HAP 存在,也可以与其他功能 HAP 一起打包。

(三)、HAP 的优势

  1. 模块化设计

    • 支持应用的模块化开发,可以将复杂的应用拆分为多个功能模块,便于维护和扩展。
    • 功能 HAP 可以按需加载,提高应用的启动速度和资源利用率。
  2. 跨设备适配

    • 鸿蒙操作系统支持多种设备形态,HAP 可以根据不同的设备类型和屏幕尺寸进行适配,提供一致的用户体验。
  3. 安全性和可靠性

    • 通过签名机制确保应用的来源和完整性,提高应用的安全性。
    • 系统会对 HAP 进行严格的验证和管理,确保应用的可靠运行。

四、AbilityStage是什么?

AbilityStage是Module级别的组件容器,与HAP是一一对应的关系。

AbilityStage 是鸿蒙操作系统(HarmonyOS)中一个重要的生命周期管理类,用于管理应用的全局生命周期和多个 Ability 组件的生命周期。它是应用的入口点,类似于 Android 中的 Application 类。通过 AbilityStage,开发者可以实现应用级别的初始化、资源管理和全局事件监听等功能。

(一)、主要功能

  1. 全局生命周期管理

    • onCreate():当应用首次启动时调用,可以在这里进行全局初始化操作。
    • onTerminate():当应用即将终止时调用,可以在这里进行资源释放等操作。
    • onBackground():当应用进入后台时调用,可以在这里执行一些后台处理逻辑。
    • onForeground():当应用从后台回到前台时调用,可以在这里恢复一些前台所需的资源或状态。
  2. 管理多个 Ability 组件

    • onAbilityConnectDone(Context context, Intent intent, IRemoteObject remote):当 Ability 连接成功时调用。
    • onAbilityDisconnectDone(Context context, Intent intent):当 Ability 断开连接时调用。
    • onAbilityCommand(Context context, Intent intent, int startId):当 Ability 接收到命令时调用。
  3. 资源管理

    • 可以在 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,开发者可以更好地管理和控制应用的全局行为,确保应用在不同状态下的稳定性和性能。

相关推荐
Android技术栈14 分钟前
鸿蒙开发(NEXT/API 12)【状态查询与订阅】手机侧应用开发
华为·系统架构·harmonyos·鸿蒙·鸿蒙系统·openharmony
Android技术栈2 小时前
鸿蒙开发(NEXT/API 12)【硬件(传感器开发)】传感器服务
华为·硬件架构·harmonyos·鸿蒙·鸿蒙系统·openharmony·传感器
OH五星上将3 小时前
【移植】一种快速移植OpenHarmony Linux内核的方法
linux·运维·驱动开发·嵌入式硬件·harmonyos·openharmony·鸿蒙内核
深海的鲸同学 luvi3 小时前
HarmonyOS/OpenHarmony 如何将rawfile中文件复制到沙箱中
华为·harmonyos·文件操作·解压·h5离线加载·拷贝
helloxmg4 小时前
鸿蒙harmonyos next flutter通信之EventChannel获取ohos系统时间
flutter·华为·harmonyos
90后的晨仔4 小时前
UIAbility、ExtensionAbility、HAP、AbilityStage在运行期和编译器的关系
harmonyos
前端御书房9 小时前
HarmonyOS 组件
pytorch·深度学习·harmonyos
亦世凡华、10 小时前
HarmonyOS NEXT:实现电影列表功能展示界面
经验分享·华为·harmonyos·harmonyos next
Android技术栈14 小时前
鸿蒙开发(NEXT/API 12)【穿戴设备信息查询】手机侧应用开发
嵌入式硬件·硬件架构·移动开发·harmonyos·鸿蒙·鸿蒙系统