uiability-usage.md 3.1 KB
Newer Older
Z
zengyawen 已提交
1 2 3
# UIAbility组件基本用法


Z
zhongjianfei 已提交
4
UIAbility组件的基本用法包括:指定UIAbility的启动页面以及获取UIAbility的上下文[UIAbilityContext](../reference/apis/js-apis-inner-application-uiAbilityContext.md)
Z
zengyawen 已提交
5 6 7 8 9 10 11 12 13


## 指定UIAbility的启动页面

应用中的UIAbility在启动过程中,需要指定启动页面,否则应用启动后会因为没有默认加载页面而导致白屏。可以在UIAbility的onWindowStageCreate()生命周期回调中,通过[WindowStage](../reference/apis/js-apis-window.md#windowstage9)对象的loadContent()方法设置启动页面。


```ts
import UIAbility from '@ohos.app.ability.UIAbility';
14
import window from '@ohos.window';
Z
zengyawen 已提交
15 16

export default class EntryAbility extends UIAbility {
17
    onWindowStageCreate(windowStage: window.WindowStage) {
Z
zengyawen 已提交
18 19 20 21 22 23 24 25 26 27
        // Main window is created, set main page for this ability
        windowStage.loadContent('pages/Index', (err, data) => {
            // ...
        });
    }

    // ...
}
```

zyjhandsome's avatar
zyjhandsome 已提交
28
> **说明:**
Z
zengyawen 已提交
29 30 31 32 33
> 在DevEco Studio中创建的UIAbility中,该UIAbility实例默认会加载Index页面,根据需要将Index页面路径替换为需要的页面路径即可。


## 获取UIAbility的上下文信息

Z
zhongjianfei 已提交
34
UIAbility类拥有自身的上下文信息,该信息为[UIAbilityContext](../reference/apis/js-apis-inner-application-uiAbilityContext.md)类的实例,[UIAbilityContext](../reference/apis/js-apis-inner-application-uiAbilityContext.md)类拥有abilityInfo、currentHapModuleInfo等属性。通过UIAbilityContext可以获取UIAbility的相关配置信息,如包代码路径、Bundle名称、Ability名称和应用程序需要的环境状态等属性信息,以及可以获取操作UIAbility实例的方法(如startAbility()、connectServiceExtensionAbility()、terminateSelf()等)。
Z
zengyawen 已提交
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74

- 在UIAbility中可以通过this.context获取UIAbility实例的上下文信息。
  
  ```ts
  import UIAbility from '@ohos.app.ability.UIAbility';
  
  export default class EntryAbility extends UIAbility {
      onCreate(want, launchParam) {
          // 获取UIAbility实例的上下文
          let context = this.context;
  
          // ...
      }
  }
  ```

- 在页面中获取UIAbility实例的上下文信息,包括导入依赖资源context模块和在组件中定义一个context变量两个部分。
  
  ```ts
  import common from '@ohos.app.ability.common';
  
  @Entry
  @Component
  struct Index {
    private context = getContext(this) as common.UIAbilityContext;
  
    startAbilityTest() {
      let want = {
        // Want参数信息
      };
      this.context.startAbility(want);
    }
  
    // 页面展示
    build() {
      // ...
    }
  }
  ```

Z
zhongjianfei 已提交
75
  也可以在导入依赖资源context模块后,在具体使用[UIAbilityContext](../reference/apis/js-apis-inner-application-uiAbilityContext.md)前进行变量定义。
Z
zengyawen 已提交
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98

  
  ```ts
  import common from '@ohos.app.ability.common';
  
  @Entry
  @Component
  struct Index {
  
    startAbilityTest() {
      let context = getContext(this) as common.UIAbilityContext;
      let want = {
        // Want参数信息
      };
      context.startAbility(want);
    }
  
    // 页面展示
    build() {
      // ...
    }
  }
  ```