> 文档中心 > 【HarmonyOS应用开发】【Stage模型】启动应用内的UIAbility

【HarmonyOS应用开发】【Stage模型】启动应用内的UIAbility

当一个应用内包含多个UIAbility时,存在应用内启动UIAbility的场景。例如在支付应用中从入口UIAbility启动收付款UIAbility。假设应用中有两个UIAbility:EntryAbility和EntryAbility2(可以在应用的一个模块中,也可以在的不同模块中),需要从EntryAbility的页面中启动EntryAbility2。

【HarmonyOS应用开发】【Stage模型】启动应用内的UIAbility

import UIAbility from '@ohos.app.ability.UIAbility';import hilog from '@ohos.hilog';import window from '@ohos.window';export default class EntryAbility extends UIAbility {    onCreate(want, launchParam) { hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');    }    onDestroy() { hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');    }    onWindowStageCreate(windowStage: window.WindowStage) { // Main window is created, set main page for this ability hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); windowStage.loadContent('pages/Index', (err, data) => {     if (err.code) {  hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');  return;     }     hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? ''); });    }    onWindowStageDestroy() { // Main window is destroyed, release UI related resources hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');    }    onForeground() { // Ability has brought to foreground hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');    }    onBackground() { // Ability has back to background hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground');    }}
import common from '@ohos.app.ability.common'@Entry@Componentstruct Index {    @State message: string = 'Page'    private context = getContext(this) as common.UIAbilityContext    build() { Row() {     Column() {  Text(this.message)      .fontSize(50)      .fontWeight(FontWeight.Bold)  Button("跳转到另一个UIAbility")      .size({ width: 350, height: 60 })      .fontSize(30)      .onClick(() => {   let wantInfo = {//  待启动的UIAbility所在设备的Id// deviceId为空表示本设备deviceId: '',//  待启动的UIAbility所在应用的包名bundleName: 'com.example.zrc',//  待启动的UIAbility所在模块的名称moduleName: 'entry',//  待启动的UIAbility的名称abilityName: 'EntryAbility2',//  传递到目标UIAbility的参数parameters: {    info: '来自EntryAbility的Index页面',},   }   this.context.startAbility(wantInfo)      })     }     .width('100%') } .height('100%')    }}
import UIAbility from '@ohos.app.ability.UIAbility';import hilog from '@ohos.hilog';import window from '@ohos.window';export default class EntryAbility2 extends UIAbility {    onCreate(want, launchParam) { // 接收源UIAbility传过来的参数 let info = want?.parameters?.info hilog.info(0x0000, 'ReceivedInfo', '%{public}s', info) hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');    }    onDestroy() { hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');    }    onWindowStageCreate(windowStage: window.WindowStage) { // Main window is created, set main page for this ability hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); windowStage.loadContent('pages/Index2', (err, data) => {     if (err.code) {  hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');  return;     }     hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? ''); });    }    onWindowStageDestroy() { // Main window is destroyed, release UI related resources hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');    }    onForeground() { // Ability has brought to foreground hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');    }    onBackground() { // Ability has back to background hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground');    }}
@Entry@Componentstruct Index2 {    @State message: string = 'Page2'    build() { Row() {     Column() {  Text(this.message)      .fontSize(50)      .fontWeight(FontWeight.Bold)     }     .width('100%') } .height('100%')    }}