From 6f2dc6be089faeb7fd7396f00faea9c3d8f06ab9 Mon Sep 17 00:00:00 2001 From: xuzhihao Date: Tue, 23 Apr 2024 15:22:14 +0800 Subject: [PATCH] =?UTF-8?q?Bugfix:=20=E5=85=83=E8=83=BD=E5=8A=9B=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E6=95=B4=E6=94=B9=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xuzhihao --- .../application-models/abilitykit-overview.md | 8 +- ...plication-component-configuration-stage.md | 2 +- .../connect-serviceability.md | 4 +- .../stage-model-development-overview.md | 2 +- .../uiability-data-sync-with-ui.md | 208 +++++++++--------- .../uiability-intra-device-interaction.md | 22 +- .../uiability-launch-type.md | 147 ++++++------- .../application-models/uiability-lifecycle.md | 19 +- .../application-models/uiability-usage.md | 7 +- .../js-apis-app-ability-uiAbility.md | 6 +- 10 files changed, 204 insertions(+), 221 deletions(-) diff --git a/zh-cn/application-dev/application-models/abilitykit-overview.md b/zh-cn/application-dev/application-models/abilitykit-overview.md index 7572483fd6..4f507d31d8 100644 --- a/zh-cn/application-dev/application-models/abilitykit-overview.md +++ b/zh-cn/application-dev/application-models/abilitykit-overview.md @@ -12,7 +12,7 @@ Ability Kit(程序框架服务)提供了应用程序开发和运行的应用 ## 能力范围 - 提供应用进程创建和销毁、应用生命周期调度能力。 -- 提供应用组件运行入口,应用组件生命周期调度、组件间交互等能力。 +- 提供应用组件运行入口、应用组件生命周期调度、组件间交互等能力。 - 提供应用上下文环境、系统环境变化监听等能力。 - 提供应用流转能力。 - 提供多包机制、共享包、应用信息配置等能力,详见[应用程序包概述](../quick-start/application-package-overview.md)。 @@ -28,25 +28,19 @@ Ability Kit(程序框架服务)提供了应用程序开发和运行的应用 2. **原生支持应用组件级的跨端迁移和多端协同** Stage模型实现了应用组件与UI解耦: - - 在跨端迁移场景下,系统在多设备的应用组件之间迁移数据/状态后,UI便可利用ArkUI的声明式特点,通过应用组件中保存的数据/状态恢复用户界面,便捷实现跨端迁移。 - - 在多端协同场景下,应用组件具备组件间通信的RPC调用能力,天然支持跨设备应用组件的交互。 3. **支持多设备和多窗口形态** 应用组件管理和窗口管理在架构层面解耦: - - 便于系统对应用组件进行裁剪(无屏设备可裁剪窗口)。 - - 便于系统扩展窗口形态。 - - 在多设备(如桌面设备和移动设备)上,应用组件可使用同一套生命周期。 4. **平衡应用能力和系统管控成本** Stage模型重新定义应用能力的边界,平衡应用能力和系统管控成本。 - - 提供特定场景(如服务卡片、输入法)的应用组件,以便满足更多的使用场景。 - 规范化后台进程管理:为保障用户体验,Stage模型对后台应用进程进行了有序治理,应用程序不能随意驻留在后台,同时应用后台行为受到严格管理,防止恶意应用行为。 diff --git a/zh-cn/application-dev/application-models/application-component-configuration-stage.md b/zh-cn/application-dev/application-models/application-component-configuration-stage.md index ec7661dd6d..226b0fb872 100644 --- a/zh-cn/application-dev/application-models/application-component-configuration-stage.md +++ b/zh-cn/application-dev/application-models/application-component-configuration-stage.md @@ -19,7 +19,7 @@ * 桌面上需要显示图标时 * 最近任务列表中显示时 -**图1** 应用图标和标签 +**图1** 图标和标签 ![application-component-configuration-stage](figures/application-component-configuration-stage.png) diff --git a/zh-cn/application-dev/application-models/connect-serviceability.md b/zh-cn/application-dev/application-models/connect-serviceability.md index 7071f819d4..34b2f82a29 100644 --- a/zh-cn/application-dev/application-models/connect-serviceability.md +++ b/zh-cn/application-dev/application-models/connect-serviceability.md @@ -1,7 +1,7 @@ # 连接ServiceAbility -如果ServiceAbility需要与PageAbility或其他应用的ServiceAbility进行交互,则须创建用于连接的Connection。ServiceAbility支持其他Ability通过connectAbility()方法与其进行连接。PageAbility的connectAbility方法定义在featureAbility中,ServiceAbility的connectAbility方法定义在particleAbility中。连接ServiceAbility的规则详见[组件启动规则](component-startup-rules.md)章节。在使用connectAbility()处理回调时,需要传入目标Service的Want与IAbilityConnection的实例。IAbilityConnection提供了以下方法供开发者实现。 +如果ServiceAbility需要与PageAbility或其他应用的ServiceAbility进行交互,则须创建用于连接的Connection。ServiceAbility支持其他Ability通过connectAbility()方法与其进行连接。PageAbility的[connectAbility()](../reference/apis-ability-kit/js-apis-ability-featureAbility.md#featureabilityconnectability7)方法定义在[featureAbility](../reference/apis-ability-kit/js-apis-ability-featureAbility.md)中,ServiceAbility的[connectAbility()](../reference/apis-ability-kit/js-apis-ability-particleAbility.md#particleabilityconnectability)方法定义在[particleAbility](../reference/apis-ability-kit/js-apis-ability-particleAbility.md)中。连接ServiceAbility的规则详见[组件启动规则](component-startup-rules-fa.md)章节。在使用connectAbility()处理回调时,需要传入目标Service的[Want](../reference/apis-ability-kit/js-apis-app-ability-want.md)与[IAbilityConnection](../reference/apis-ability-kit/js-apis-inner-ability-connectOptions.md)的实例。[IAbilityConnection](../reference/apis-ability-kit/js-apis-inner-ability-connectOptions.md)提供了以下方法供开发者实现。 **表1** IAbilityConnection接口说明 @@ -103,5 +103,5 @@ class FirstServiceAbilityStub extends rpc.RemoteObject { return true; } } -... +// ... ``` diff --git a/zh-cn/application-dev/application-models/stage-model-development-overview.md b/zh-cn/application-dev/application-models/stage-model-development-overview.md index 50b40f2797..490d5e3f13 100644 --- a/zh-cn/application-dev/application-models/stage-model-development-overview.md +++ b/zh-cn/application-dev/application-models/stage-model-development-overview.md @@ -46,4 +46,4 @@ 针对Stage模型开发,有以下相关实例可供参考: -- [Stage模型(ArkTS)(Full SDK)(API10)](https://gitee.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/ApplicationModels/StageModel) \ No newline at end of file +- [Stage模型(ArkTS)(Full SDK)(API10)](https://gitee.com/openharmony/applications_app_samples/tree/master/code/SystemFeature/ApplicationModels/StageModel) \ No newline at end of file diff --git a/zh-cn/application-dev/application-models/uiability-data-sync-with-ui.md b/zh-cn/application-dev/application-models/uiability-data-sync-with-ui.md index 46a5a2216f..a39f04c7fb 100644 --- a/zh-cn/application-dev/application-models/uiability-data-sync-with-ui.md +++ b/zh-cn/application-dev/application-models/uiability-data-sync-with-ui.md @@ -27,7 +27,6 @@ const TAG: string = '[EventAbility]'; export default class EntryAbility extends UIAbility { - onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { // 获取UIAbility实例的上下文 let context = this.context; @@ -40,9 +39,7 @@ }); hilog.info(DOMAIN_NUMBER, TAG, '%{public}s', 'Ability onCreate'); } - - // ... - + // ... eventFunc(argOne: Context, argTwo: Context): void { hilog.info(DOMAIN_NUMBER, TAG, '1. ' + `${argOne}, ${argTwo}`); return; @@ -53,108 +50,107 @@ 2. 在UI中通过[eventHub.emit()](../reference/apis-ability-kit/js-apis-inner-application-eventHub.md#eventhubemit)方法触发该事件,在触发事件的同时,根据需要传入参数信息。 ```ts - import common from '@ohos.app.ability.common'; - import promptAction from '@ohos.promptAction' - - @Entry - @Component - struct Page_EventHub { - - private context = getContext(this) as common.UIAbilityContext; - - eventHubFunc() : void { - // 不带参数触发自定义“event1”事件 - this.context.eventHub.emit('event1'); - // 带1个参数触发自定义“event1”事件 - this.context.eventHub.emit('event1', 1); - // 带2个参数触发自定义“event1”事件 - this.context.eventHub.emit('event1', 2, 'test'); - // 开发者可以根据实际的业务场景设计事件传递的参数 - } - - build() { - Column() { - Row() { - Flex({ justifyContent: FlexAlign.Start, alignContent: FlexAlign.Center }) { - Text($r('app.string.DataSynchronization')) - .fontSize(24) - .fontWeight(700) - .textAlign(TextAlign.Start) - .margin({ top: 12 , bottom: 11 , right: 24 , left: 24}) - } - } - .width('100%') - .height(56) - .justifyContent(FlexAlign.Start) - .backgroundColor($r('app.color.backGrounding')) - - List({ initialIndex: 0 }) { - ListItem() { - Row() { - Row(){ - Text($r('app.string.EventHubFuncA')) - .textAlign(TextAlign.Start) - .fontWeight(500) - .margin({ top: 13, bottom: 13, left: 0, right: 8 }) - .fontSize(16) - .width(232) - .height(22) - .fontColor($r('app.color.text_color')) - } - .height(48) - .width('100%') - .borderRadius(24) - .margin({ top: 4, bottom: 4, left: 12, right: 12 }) - } - .onClick(() => { - this.eventHubFunc(); - promptAction.showToast({ - message: $r('app.string.EventHubFuncA') - }); - }) - } - .height(56) - .backgroundColor($r('app.color.start_window_background')) - .borderRadius(24) - .margin({ top: 8, right: 12, left: 12 }) - - ListItem() { - Row() { - Row(){ - Text($r('app.string.EventHubFuncB')) - .textAlign(TextAlign.Start) - .fontWeight(500) - .margin({ top: 13, bottom: 13, left: 0, right: 8 }) - .fontSize(16) - .width(232) - .height(22) - .fontColor($r('app.color.text_color')) - } - .height(48) - .width('100%') - .borderRadius(24) - .margin({ top: 4, bottom: 4, left: 12, right: 12 }) - } - .onClick(() => { - this.context.eventHub.off('event1'); - promptAction.showToast({ - message: $r('app.string.EventHubFuncB') - }); - }) - } - .height(56) - .backgroundColor($r('app.color.start_window_background')) - .borderRadius(24) - .margin({ top: 12, right: 12, left: 12 }) - } - .height('100%') - .backgroundColor($r('app.color.backGrounding')) - } - .width('100%') - .margin({ top: 8 }) - .backgroundColor($r('app.color.backGrounding')) - } - } + import common from '@ohos.app.ability.common'; + import promptAction from '@ohos.promptAction'; + + @Entry + @Component + struct Page_EventHub { + + private context = getContext(this) as common.UIAbilityContext; + + eventHubFunc() : void { + // 不带参数触发自定义“event1”事件 + this.context.eventHub.emit('event1'); + // 带1个参数触发自定义“event1”事件 + this.context.eventHub.emit('event1', 1); + // 带2个参数触发自定义“event1”事件 + this.context.eventHub.emit('event1', 2, 'test'); + // 开发者可以根据实际的业务场景设计事件传递的参数 + } + + build() { + Column() { + Row() { + Flex({ justifyContent: FlexAlign.Start, alignContent: FlexAlign.Center }) { + Text('DataSynchronization') + .fontSize(24) + .fontWeight(700) + .textAlign(TextAlign.Start) + .margin({ top: 12 , bottom: 11 , right: 24 , left: 24}) + } + } + .width('100%') + .height(56) + .justifyContent(FlexAlign.Start) + .backgroundColor(Color.Gray) + + List({ initialIndex: 0 }) { + ListItem() { + Row() { + Row(){ + Text('EventHubFuncA') + .textAlign(TextAlign.Start) + .fontWeight(500) + .margin({ top: 13, bottom: 13, left: 0, right: 8 }) + .fontSize(16) + .width(232) + .height(22) + .fontColor(Color.Black) + } + .height(48) + .width('100%') + .borderRadius(24) + .margin({ top: 4, bottom: 4, left: 12, right: 12 }) + } + .onClick(() => { + this.eventHubFunc(); + promptAction.showToast({ + message: 'EventHubFuncA' + }); + }) + } + .height(56) + .backgroundColor(Color.White) + .borderRadius(24) + .margin({ top: 8, right: 12, left: 12 }) + + ListItem() { + Row() { + Row(){ + Text('EventHubFuncB') + .textAlign(TextAlign.Start) + .fontWeight(500) + .margin({ top: 13, bottom: 13, left: 0, right: 8 }) + .fontSize(16) + .width(232) + .height(22) + .fontColor(Color.Black) + } + .height(48) + .width('100%') + .borderRadius(24) + .margin({ top: 4, bottom: 4, left: 12, right: 12 }) + } + .onClick(() => { + this.context.eventHub.off('event1'); + promptAction.showToast({ + message: 'EventHubFuncB' + }); + }) + } + .height(56) + .backgroundColor(Color.White) + .borderRadius(24) + .margin({ top: 12, right: 12, left: 12 }) + } + .height('100%') + .backgroundColor(Color.Gray) + } + .width('100%') + .margin({ top: 8 }) + } + } ``` 3. 在UIAbility的注册事件回调中可以得到对应的触发事件结果,运行日志结果如下所示。 diff --git a/zh-cn/application-dev/application-models/uiability-intra-device-interaction.md b/zh-cn/application-dev/application-models/uiability-intra-device-interaction.md index 6cadb68c24..183a9d1a75 100644 --- a/zh-cn/application-dev/application-models/uiability-intra-device-interaction.md +++ b/zh-cn/application-dev/application-models/uiability-intra-device-interaction.md @@ -45,7 +45,7 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳 private context = getContext(this) as common.UIAbilityContext; build() { - ... + // ... Button() .onClick(() => { // context为Ability对象的成员,在非Ability对象内部调用需要 @@ -104,7 +104,7 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳 @Component struct Page_UIAbilityComponentsInteractive { build() { - ... + // ... Button() .onClick(() => { let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // UIAbilityContext @@ -784,7 +784,7 @@ export default class FuncAbility extends UIAbility { > **说明:** > -> 当被调用方[UIAbility组件启动模式](uiability-launch-type.md)设置为multiton启动模式时,每次启动都会创建一个新的实例,那么[onNewWant()](../reference/apis-ability-kit/js-apis-app-ability-uiAbility.md#abilityonnewwant)回调就不会被用到。 +> 当被调用方[UIAbility组件启动模式](uiability-launch-type.md)设置为multiton启动模式时,每次启动都会创建一个新的实例,那么[onNewWant()](../reference/apis-ability-kit/js-apis-app-ability-uiAbility.md#uiabilityonnewwant)回调就不会被用到。 ## 通过Call调用实现UIAbility交互(仅对系统应用开放) @@ -883,7 +883,7 @@ Call功能主要接口如下表所示。具体的API详见[接口文档](../refe this.str = string; }; - mySequenceable(num, string): void { + mySequenceable(num: number, string: string): void { this.num = num; this.str = string; }; @@ -899,7 +899,7 @@ Call功能主要接口如下表所示。具体的API详见[接口文档](../refe this.str = messageSequence.readString(); return true; }; - }; + } ``` 4. 实现Callee.on监听及Callee.off解除监听。 @@ -912,7 +912,6 @@ Call功能主要接口如下表所示。具体的API详见[接口文档](../refe import UIAbility from '@ohos.app.ability.UIAbility'; import type Want from '@ohos.app.ability.Want'; import hilog from '@ohos.hilog'; - import Logger from '../utils/Logger'; import type rpc from '@ohos.rpc'; import type { Caller } from '@ohos.app.ability.UIAbility'; @@ -929,7 +928,7 @@ Call功能主要接口如下表所示。具体的API详见[接口文档](../refe this.str = string; } - mySequenceable(num, string): void { + mySequenceable(num: number, string: string): void { this.num = num; this.str = string; } @@ -976,9 +975,9 @@ Call功能主要接口如下表所示。具体的API详见[接口文档](../refe this.caller.release(); this.caller = undefined; } - Logger.info('caller release succeed'); + console.info('caller release succeed'); } catch (error) { - Logger.info(`caller release failed with ${error}`); + console.info(`caller release failed with ${error}`); }; } onDestroy(): void { @@ -1035,11 +1034,10 @@ Call功能主要接口如下表所示。具体的API详见[接口文档](../refe let message = (err as BusinessError).message; hilog.error(DOMAIN_NUMBER, TAG, `Failed to caller register on release. Code is ${code}, message is ${message}`); } - ; } build() { - Button() + Button('StartAbilityByCall') .onClick(() => { let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // UIAbilityContext let want: Want = { @@ -1060,7 +1058,7 @@ Call功能主要接口如下表所示。具体的API详见[接口文档](../refe hilog.info(DOMAIN_NUMBER, TAG, 'get caller success'); this.regOnRelease(caller); promptAction.showToast({ - message: $r('app.string.CallerSuccess') + message: 'CallerSuccess' }); } }).catch((err: BusinessError) => { diff --git a/zh-cn/application-dev/application-models/uiability-launch-type.md b/zh-cn/application-dev/application-models/uiability-launch-type.md index 4141890227..adbd5d5624 100644 --- a/zh-cn/application-dev/application-models/uiability-launch-type.md +++ b/zh-cn/application-dev/application-models/uiability-launch-type.md @@ -95,80 +95,78 @@ specified启动模式为指定实例模式,针对一些特殊场景使用( 2. 在创建UIAbility实例之前,开发者可以为该实例指定一个唯一的字符串Key,这样在调用[`startAbility()`](../reference/apis-ability-kit/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法时,应用就可以根据指定的Key来识别响应请求的UIAbility实例。在EntryAbility中,调用[`startAbility()`](../reference/apis-ability-kit/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法时,可以在`want`参数中增加一个自定义参数,例如`instanceKey`,以此来区分不同的UIAbility实例。 ```ts - // 在启动指定实例模式的UIAbility时,给每一个UIAbility实例配置一个独立的Key标识 - // 例如在文档使用场景中,可以用文档路径作为Key标识 - import common from '@ohos.app.ability.common'; - import hilog from '@ohos.hilog'; - import Want from '@ohos.app.ability.Want'; - import { BusinessError } from '@ohos.base'; - - const TAG: string = '[Page_StartModel]'; - const DOMAIN_NUMBER: number = 0xFF00; - - function getInstance() : string { - return 'KEY'; - } - - @Entry - @Component - struct Page_StartModel { - private KEY_NEW = 'KEY'; - build() { - Row() { - Column() { - ... - Button() - ... - .onClick(() => { - let context:common.UIAbilityContext = getContext(this) as common.UIAbilityContext; - // context为调用方UIAbility的UIAbilityContext; - let want: Want = { - deviceId: '', // deviceId为空表示本设备 - bundleName: 'com.samples.stagemodelabilitydevelop', - abilityName: 'SpecifiedFirstAbility', - moduleName: 'entry', // moduleName非必选 - parameters: { // 自定义信息 - instanceKey: this.KEY_NEW - } - }; - context.startAbility(want).then(() => { - hilog.info(DOMAIN_NUMBER, TAG, 'Succeeded in starting SpecifiedAbility.'); - }).catch((err: BusinessError) => { - hilog.error(DOMAIN_NUMBER, TAG, `Failed to start SpecifiedAbility. Code is ${err.code}, message is ${err.message}`); - }) - this.KEY_NEW = this.KEY_NEW + 'a'; - }) - - ... - - Button() - ... - .onClick(() => { - let context:common.UIAbilityContext = getContext(this) as common.UIAbilityContext; - // context为调用方UIAbility的UIAbilityContext; - let want: Want = { - deviceId: '', // deviceId为空表示本设备 - bundleName: 'com.samples.stagemodelabilitydevelop', - abilityName: 'SpecifiedSecondAbility', - moduleName: 'entry', // moduleName非必选 - parameters: { // 自定义信息 - instanceKey: getInstance() - } - }; - context.startAbility(want).then(() => { - hilog.info(DOMAIN_NUMBER, TAG, 'Succeeded in starting SpecifiedAbility.'); - }).catch((err: BusinessError) => { - hilog.error(DOMAIN_NUMBER, TAG, `Failed to start SpecifiedAbility. Code is ${err.code}, message is ${err.message}`); - }) - this.KEY_NEW = this.KEY_NEW + 'a'; - }) - ... - } - .width('100%') - } - .height('100%') - } - } + // 在启动指定实例模式的UIAbility时,给每一个UIAbility实例配置一个独立的Key标识 + // 例如在文档使用场景中,可以用文档路径作为Key标识 + import common from '@ohos.app.ability.common'; + import hilog from '@ohos.hilog'; + import Want from '@ohos.app.ability.Want'; + import { BusinessError } from '@ohos.base'; + + const TAG: string = '[Page_StartModel]'; + const DOMAIN_NUMBER: number = 0xFF00; + + function getInstance() : string { + return 'KEY'; + } + + @Entry + @Component + struct Page_StartModel { + private KEY_NEW = 'KEY'; + build() { + Row() { + Column() { + // ... + Button() + // ... + .onClick(() => { + let context:common.UIAbilityContext = getContext(this) as common.UIAbilityContext; + // context为调用方UIAbility的UIAbilityContext; + let want: Want = { + deviceId: '', // deviceId为空表示本设备 + bundleName: 'com.samples.stagemodelabilitydevelop', + abilityName: 'SpecifiedFirstAbility', + moduleName: 'entry', // moduleName非必选 + parameters: { // 自定义信息 + instanceKey: this.KEY_NEW + } + }; + context.startAbility(want).then(() => { + hilog.info(DOMAIN_NUMBER, TAG, 'Succeeded in starting SpecifiedAbility.'); + }).catch((err: BusinessError) => { + hilog.error(DOMAIN_NUMBER, TAG, `Failed to start SpecifiedAbility. Code is ${err.code}, message is ${err.message}`); + }) + this.KEY_NEW = this.KEY_NEW + 'a'; + }) + // ... + Button() + // ... + .onClick(() => { + let context:common.UIAbilityContext = getContext(this) as common.UIAbilityContext; + // context为调用方UIAbility的UIAbilityContext; + let want: Want = { + deviceId: '', // deviceId为空表示本设备 + bundleName: 'com.samples.stagemodelabilitydevelop', + abilityName: 'SpecifiedSecondAbility', + moduleName: 'entry', // moduleName非必选 + parameters: { // 自定义信息 + instanceKey: getInstance() + } + }; + context.startAbility(want).then(() => { + hilog.info(DOMAIN_NUMBER, TAG, 'Succeeded in starting SpecifiedAbility.'); + }).catch((err: BusinessError) => { + hilog.error(DOMAIN_NUMBER, TAG, `Failed to start SpecifiedAbility. Code is ${err.code}, message is ${err.message}`); + }) + this.KEY_NEW = this.KEY_NEW + 'a'; + }) + // ... + } + .width('100%') + } + .height('100%') + } + } ``` 3. 由于SpecifiedAbility的启动模式被配置为指定实例启动模式,因此在SpecifiedAbility启动之前,会先进入对应的AbilityStage的[`onAcceptWant()`](../reference/apis-ability-kit/js-apis-app-ability-abilityStage.md#abilitystageonacceptwant)生命周期回调中,以获取该UIAbility实例的Key值。然后系统会自动匹配,如果存在与该UIAbility实例匹配的Key,则会启动与之绑定的UIAbility实例,并进入该UIAbility实例的[`onNewWant()`](../reference/apis-ability-kit/js-apis-app-ability-uiAbility.md#uiabilityonnewwant)回调函数;否则会创建一个新的UIAbility实例,并进入该UIAbility实例的[`onCreate()`](../reference/apis-ability-kit/js-apis-app-ability-uiAbility.md#uiabilityoncreate)回调函数和[`onWindowStageCreate()`](../reference/apis-ability-kit/js-apis-app-ability-uiAbility.md#uiabilityonwindowstagecreate)回调函数。 @@ -189,7 +187,6 @@ specified启动模式为指定实例模式,针对一些特殊场景使用( return `SpecifiedAbilityInstance_${want.parameters.instanceKey}`; } } - return ''; } } diff --git a/zh-cn/application-dev/application-models/uiability-lifecycle.md b/zh-cn/application-dev/application-models/uiability-lifecycle.md index cdc86b54f0..8471dcb31e 100644 --- a/zh-cn/application-dev/application-models/uiability-lifecycle.md +++ b/zh-cn/application-dev/application-models/uiability-lifecycle.md @@ -46,13 +46,11 @@ UIAbility实例创建完成之后,在进入Foreground之前,系统会创建 在onWindowStageCreate()回调中通过[`loadContent()`](../reference/apis-arkui/js-apis-window.md#loadcontent9-2)方法设置应用要加载的页面,并根据需要调用[`on('windowStageEvent')`](../reference/apis-arkui/js-apis-window.md#onwindowstageevent9)方法订阅WindowStage的[事件](../reference/apis-arkui/js-apis-window.md#windowstageeventtype9)(获焦/失焦、可见/不可见)。 ```ts -import Logger from '../utils/Logger'; import UIAbility from '@ohos.app.ability.UIAbility'; import window from '@ohos.window'; export default class EntryAbility extends UIAbility { // ... - onWindowStageCreate(windowStage: window.WindowStage): void { // 设置WindowStage的事件订阅(获焦/失焦、可见/不可见) try { @@ -60,25 +58,24 @@ export default class EntryAbility extends UIAbility { let stageEventType: window.WindowStageEventType = data; switch (stageEventType) { case window.WindowStageEventType.SHOWN: // 切到前台 - Logger.info('windowStage foreground.'); + console.info('windowStage foreground.'); break; case window.WindowStageEventType.ACTIVE: // 获焦状态 - Logger.info('windowStage active.'); + console.info('windowStage active.'); break; case window.WindowStageEventType.INACTIVE: // 失焦状态 - Logger.info('windowStage inactive.'); + console.info('windowStage inactive.'); break; case window.WindowStageEventType.HIDDEN: // 切到后台 - Logger.info('windowStage background.'); + console.info('windowStage background.'); break; default: break; } }); } catch (exception) { - Logger.error('Failed to enable the listener for window stage event changes. Cause:' + JSON.stringify(exception)); + console.error('Failed to enable the listener for window stage event changes. Cause:' + JSON.stringify(exception)); } - // 设置UI加载 windowStage.loadContent('pages/Index', (err, data) => { // ... @@ -94,20 +91,16 @@ export default class EntryAbility extends UIAbility { 对应于`onWindowStageCreate()`回调。在UIAbility实例销毁之前,则会先进入`onWindowStageDestroy()`回调,可以在该回调中释放UI资源。 ```ts -import Logger from '../utils/Logger'; import UIAbility from '@ohos.app.ability.UIAbility'; import window from '@ohos.window'; -import type { BusinessError } from '@ohos.base'; export default class EntryAbility extends UIAbility { windowStage: window.WindowStage | undefined = undefined; // ... - onWindowStageCreate(windowStage: window.WindowStage): void { this.windowStage = windowStage; // ... } - onWindowStageDestroy() { // 释放UI资源 } @@ -148,7 +141,9 @@ export default class EntryAbility extends UIAbility { 当应用的UIAbility实例已创建,且UIAbility配置为[singleton](uiability-launch-type.md#singleton启动模式)启动模式时,再次调用[`startAbility()`](../reference/apis-ability-kit/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法启动该UIAbility实例时,只会进入该UIAbility的[`onNewWant()`](../reference/apis-ability-kit/js-apis-app-ability-uiAbility.md#uiabilityonnewwant)回调,不会进入其[`onCreate()`](../reference/apis-ability-kit/js-apis-app-ability-uiAbility.md#uiabilityoncreate)和[`onWindowStageCreate()`](../reference/apis-ability-kit/js-apis-app-ability-uiAbility.md#uiabilityonwindowstagecreate)生命周期回调。应用可以在该回调中更新要加载的资源和数据等,用于后续的UI展示。 ```ts +import type AbilityConstant from '@ohos.app.ability.AbilityConstant'; import UIAbility from '@ohos.app.ability.UIAbility'; +import type Want from '@ohos.app.ability.Want'; export default class EntryAbility extends UIAbility { // ... diff --git a/zh-cn/application-dev/application-models/uiability-usage.md b/zh-cn/application-dev/application-models/uiability-usage.md index afbbc6f84e..345e29066a 100644 --- a/zh-cn/application-dev/application-models/uiability-usage.md +++ b/zh-cn/application-dev/application-models/uiability-usage.md @@ -20,7 +20,6 @@ export default class EntryAbility extends UIAbility { // ... }); } - // ... } ``` @@ -45,7 +44,7 @@ UIAbility类拥有自身的上下文信息,该信息为[UIAbilityContext](../r onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { // 获取UIAbility实例的上下文 let context = this.context; - ... + // ... } } ``` @@ -70,7 +69,7 @@ UIAbility类拥有自身的上下文信息,该信息为[UIAbilityContext](../r // 页面展示 build() { - ... + // ... } } ``` @@ -96,7 +95,7 @@ UIAbility类拥有自身的上下文信息,该信息为[UIAbilityContext](../r // 页面展示 build() { - ... + // ... } } ``` diff --git a/zh-cn/application-dev/reference/apis-ability-kit/js-apis-app-ability-uiAbility.md b/zh-cn/application-dev/reference/apis-ability-kit/js-apis-app-ability-uiAbility.md index 90dac89fb5..5a9ba0ceba 100644 --- a/zh-cn/application-dev/reference/apis-ability-kit/js-apis-app-ability-uiAbility.md +++ b/zh-cn/application-dev/reference/apis-ability-kit/js-apis-app-ability-uiAbility.md @@ -223,6 +223,10 @@ onContinue(wantParam: Record<string, Object>): AbilityConstant.OnContinueR 当Ability准备迁移时触发,保存数据。 +**说明:** +> +> 从API version 12 开始,UIAbility.onContinue生命周期新增支持返回值为Promise\<[AbilityConstant.OnContinueResult](js-apis-app-ability-abilityConstant.md#abilityconstantoncontinueresult)\>形式。 + **系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore **参数:** @@ -235,7 +239,7 @@ onContinue(wantParam: Record<string, Object>): AbilityConstant.OnContinueR | 类型 | 说明 | | -------- | -------- | -| [AbilityConstant.OnContinueResult](js-apis-app-ability-abilityConstant.md#abilityconstantoncontinueresult) \| Promise<AbilityConstant.OnContinueResult> | 接续的结果或带接续结果的Promise对象。 | +| [AbilityConstant.OnContinueResult](js-apis-app-ability-abilityConstant.md#abilityconstantoncontinueresult) \| Promise<[AbilityConstant.OnContinueResult](js-apis-app-ability-abilityConstant.md#abilityconstantoncontinueresult)> | 接续的结果或带接续结果的Promise对象。 | **示例:** -- Gitee