HarmonyOS之UIAbility简介

发布于:2025-07-25 ⋅ 阅读:(19) ⋅ 点赞:(0)

在 HarmonyOS(尤其是版本 5+ 的 Stage 模型)中,UIAbility 是构建用户界面的核心组件,负责展示页面、管理界面生命周期,并与用户交互。以下是它的完整介绍🔍


1. 🧩 什么是 UIAbility?

  • UIAbility 是 Stage 模型下的组件类型,继承自 Ability,是系统调度的基本单位。
  • 主要用于 显示界面和处理用户交互,类似 Android 的 Activity 或 iOS 的 UIViewController。
  • 每个 UIAbility 对应一个 WindowStage,用于管理界面窗口。

2. ⚙️ 生命周期(四大核心状态 + 窗口状态)

UIAbility 的生命周期由系统驱动,总共分为以下几个阶段:

  1. onCreate() – 初始化配置、获取 Context,不建议执行耗时任务
  2. onWindowStageCreate(windowStage) – 创建 UI 窗口,并通过 windowStage.loadContent("pages/YourPage") 加载页面内容
  3. onForeground() – UI 显示前,申请资源(如定位、传感器等)
  4. onBackground() – UI 隐藏后,释放资源并保存状态
  5. onWindowStageDestroy() – 窗口销毁前清理 UI 相关资源
  6. onDestroy() – Ability 完全销毁时释放剩余资源

3. 🚀 启动和页面跳转

  • 通过 this.context.startAbility(want) 启动另一个 UIAbility(同 APP 或跨 APP)
  • 页面跳转则使用 ArkUI 的路由器,例如 router.pushUrl('pages/SecondPage', params)router.back() 来实现 。

4. 🛠 Context 获取与使用

  • 在 Stage 模型中,直接使用 this.context 获取 UIAbilityContext,访问能力如启动 Ability、文件 I/O、资源获取等 。

  • 在页面中,可以通过 getUIContext().getHostContext() 获取 Ability 的 Context,如:

    const context = this.getUIContext().getHostContext() as UIAbilityContext;
    context.startAbility(want);
    

5. 🆚 Stage 模型 vs FA(旧模型)

特性 Stage 模型 FA 模型(旧)
核心单位 UIAbility + WindowStage FeatureAbility + AbilitySlice
Context 获取 this.context 直用 featureAbility.getContext()
生命周期 全新生命周期状态 传统 Ability / Slice 生命周期

Stage 模型比老 FA 模型耦合更低、更灵活、更模块化,是 HarmonyOS 推荐的开发方式 。


✅ 实战建议 & 注意事项

  • UI 加载:务必在 onWindowStageCreate 中通过 loadContent() 设置首屏页面,否则发布包可能白屏 。

  • 资源管理

    • onForeground 中申请资源,如传感器定位
    • onBackground 中释放资源并保存数据
    • onDestroy 中做最后清理操作 ([DEV Community][4])。
  • Context 操作:如需文件读写、启动其他 Ability、关闭当前 Ability 等操作,统一用 this.context


🎯 总结

UIAbility 是 HarmonyOS Stage 模型下的页面能力组件,承载 UI 展示、用户交互和资源管理。了解其生命周期、Context 获取方式以及跳转机制,是掌握 HarmonyOS 原生开发的必备基础。


网站公告

今日签到

点亮在社区的每一天
去签到