HarmonyOS 鸿蒙学习笔记3-UIAbility组件

UIAbility组件

UIAbility组件是一种包含UI界面的应用组件,主要用于和用户交互。直白来说就是构建页面,可以通过多个页面来实现功能模块。

HarmonyOS 鸿蒙学习笔记3-UIAbility组件_第1张图片

创建的module默认情况下就是一个ability,除此之外还有HAR(静态资源包)和HSP(动态共享包),主要用于module间共用资源,后续会做详细讲解。

主要内容:

1. `ability module`目录结构及声明配置;

2. 生命周期;

3. 与UI界面数据同步;

4. 应用内`UIAbility`间跳转;

5. 启动模式;

一、ability module目录结构及声明配置

HarmonyOS 鸿蒙学习笔记3-UIAbility组件_第2张图片

资源访问

如`media`中的`icon.png`,可以这样访问:

```js

//页面中

Image($r("app.media.icon"))

// 配置文件中

"icon": "$media:icon"

```

国际化使用(文本):

```js

// element/string.json 默认文本

{

  "string": [

    {

      "name": "title",

      "value": "柏木白"

    }

  ]

}

// en_US/element/string.json 英文

{

  "string": [

    {

      "name": "title",

      "value": "1000phone"

    }

  ]

}

// zh_CN/element/string.json 中文

{

  "string": [

    {

      "name": "title",

      "value": "柏木白"

    }

  ]

}

//页面中访问

Text($r("app.string.title"))

// 配置文件中

"label": "$string:title"

```

声明配置

为使应用能够正常使用`UIAbility`,需要在`module.json5`配置文件的`abilities`标签中声明`UIAbility`的名称、入口、标签等相关信息。

```js

{

  "module": {

    // ...

    "abilities": [

      {

        "name": "EntryAbility", // UIAbility组件的名称

        "srcEntrance": "./ets/entryability/EntryAbility.ts", // UIAbility组件的代码路径

        "description": "$string:EntryAbility_desc", // UIAbility组件的描述信息

        "icon": "$media:icon", // UIAbility组件的图标

        "label": "$string:EntryAbility_label", // UIAbility组件的标签

        "startWindowIcon": "$media:icon", // UIAbility组件启动页面图标资源文件的索引

        "startWindowBackground": "$color:start_window_background", // UIAbility组件启动页面背景颜色资源文件的索引

        // ...

      }

    ]

  }

}

```

二、生命周期

当用户打开、切换和返回到对应应用时,应用中的`UIAbility`实例会在其生命周期的不同状态之间转换。
`UIAbility`的生命周期包括`Create`、`Foreground`、`Background`、`Destroy`四个状态,如下图所示。

HarmonyOS 鸿蒙学习笔记3-UIAbility组件_第3张图片

`Create`状态为在应用加载过程中,`UIAbility`实例创建完成时触发,系统会调用`onCreate()`回调。可以在该回调中进行应用初始化操作,例如变量定义资源加载等,用于后续的UI界面展示。

```js

import UIAbility from '@ohos.app.ability.UIAbility';

import Window from '@ohos.window';



export default class EntryAbility extends UIAbility {

    onCreate(want, launchParam) {

      // 应用初始化

      // want中包含如包代码路径、Bundle名称、Ability名称和应用程序需要的环境状态等属性信息

      // launchParam包含启动参数 主要在被其他UIAbility唤起时使用

      // 可通过this.context访问上下文对象 后续会做讲解

    }

    // ...

}

```

`UIAbility`实例创建完成之后,在进入`Foreground`之前,系统会创建一个`WindowStage`。`WindowStage`创建完成后会进入`onWindowStageCreate()`回调,可以在该回调中设置UI界面加载、设置`WindowStage`的事件订阅。

HarmonyOS 鸿蒙学习笔记3-UIAbility组件_第4张图片

在`onWindowStageCreate()`回调中通过`loadContent()`方法设置应用要加载的页面并根据需要订阅WindowStage的事件(获焦/失焦、可见/不可见)。

```js

import UIAbility from '@ohos.app.ability.UIAbility';

import Window from '@ohos.window';



export default class EntryAbility extends UIAbility {

    onWindowStageCreate(windowStage: Window.WindowStage) {

        // 设置WindowStage的事件订阅(获焦/失焦、可见/不可见)



        // 设置UI界面加载

        windowStage.loadContent('pages/Index', (err, data) => {

            // ...

        });

    }

}

```

对应于`onWindowStageCreate()`回调。在`UIAbility`实例销毁之前,则会先进入`onWindowStageDestroy()`回调,可以在该回调中释放UI界面资源。例如在`onWindowStageDestroy()`中注销获焦/失焦等`WindowStage`事件。

`

你可能感兴趣的:(HarmonyOS 鸿蒙学习笔记3-UIAbility组件)