一、UIAbility 介绍

UIAbility 是鸿蒙开发中包含 UI 界面的应用程序(也是一种组件),主要用于和用户进行交互。

UIAbility 特点

  1. 系统调度基本单元与窗口提供:UIAbility 是系统调度的基本单元,为应用提供绘制界面的窗口。所有页面和组件要渲染呈现,必须依托窗口,UIAbility 就提供了显示页面的窗口。
  2. 多页面实现模块功能:一个 UIAbility 可通过多个页面实现一个模块功能,内部可包含众多页面,且多个 UIAbility 页面能分类管理。像 WPS 软件,新建 Word 是一个新窗口,新建 Excel 又是一个新窗口,这就属于多个 UIAbility 的情况。
  3. 对应最近任务列表任务:每一个 UIAbility 的组件实例,都会对应最近任务列表中的一个任务。

总结

  • 应用程序概念比 UIAbility 大,一个应用程序可能包含多个 UIAbility,一个 UIAbility 里包含很多页面,每个 UIAbility 实际形成一个新窗口,这些窗口可互相通信。每次打开应用,程序中会启动一个 UIAbility 的组件实例,能轻松让页面内容在 UIAbility 中加载出来。
  • 项目创建成功时,默认会创建一个 UIAbility 模块,核心配置在module.json5文件中。

核心的配置文件module.json5文件中配置

    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ets",
        "description": "$string:EntryAbility_desc",
        "icon": "$media:layered_image",
        "label": "$string:EntryAbility_label",
        "startWindowIcon": "$media:startIcon",
        "startWindowBackground": "$color:start_window_background",
        "exported": true,
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ]
      }
    ],

二、UIAbility 组件生命周期

在打开应用程序、创建窗口、切换应用程序前台或后台,以及关闭应用程序后台等操作时,会执行一系列函数,这些函数构成了 UIAbility 组件的生命周期。

UIAbility 生命周期函数执行流程总结

UIAbility 的生命周期通过一系列函数来体现,各函数作用如下:

  • onCreate:代表应用初始化加载,此时应用正在启动,可接收外部传递的参数。
  • onWindowStageCreate:应用创建时必须创建窗口对象,用于加载页面内容,开发中常在此函数执行数据库初始化、全局 AppStorage 内容存储等操作。
  • onForeground:应用切换到前台,应用启动后默认会显示在前台。
  • onBackground:应用切换到后台,即从手机界面退出。
  • onWindowStageDestroy:应用退出系统前,先执行窗口销毁。
  • onDestroy:应用的销毁。

三、页面的生命周期

@Entry修饰的组件默认当作页面使用

@Entry
@Component
struct IndexPage {


  onPageShow(): void {
    console.log('onPageShow')
  }
  onPageHide(): void {
    console.log('onPageHide')
  }
  onBackPress(): boolean | void {
    console.log('onBackPress')
  }

  build() {
    Column(){}
  }
}
  • onPageShow:页面被加载时执行
  • onPageHide:页面隐藏时执行
  • onBackPress:用户在页面上点击返回按钮时执行

上面这三个生命周期函数,只能用于被@Entry修饰的页面。不能直接用于@Component修饰的组件

aboutToAppear:代表组件被创建的时候运行

aboutToDisappear:组件被销毁的时候执行只有当你应用在后台被销毁,我们组件才代表被销毁了。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐