diff --git a/zh-cn/application-dev/ability-deprecated/fa-pageability.md b/zh-cn/application-dev/ability-deprecated/fa-pageability.md index adac7275e8a46994f276e3e77af980b893cf8ee7..9ad33e499938bad83ee95f027bae5138f7d4e467 100644 --- a/zh-cn/application-dev/ability-deprecated/fa-pageability.md +++ b/zh-cn/application-dev/ability-deprecated/fa-pageability.md @@ -47,8 +47,8 @@ ability支持单实例和多实例两种启动模式。 | 启动模式 | 描述 |说明 | | ----------- | ------- |---------------- | -| multiton | 多实例 | 每次startAbility都会启动一个新的实例。 | -| singleton | 单实例 | 系统中只存在唯一一个实例,startAbility时,如果已存在,则复用系统中的唯一一个实例。 | +| standard | 多实例模式 | 每次startAbility都会启动一个新的实例。 | +| singleton | 单实例模式 | 系统中只存在唯一一个实例,startAbility时,如果已存在,则复用系统中的唯一一个实例。 | 缺省情况下是singleton模式。 diff --git a/zh-cn/application-dev/ability-deprecated/fa-serviceability.md b/zh-cn/application-dev/ability-deprecated/fa-serviceability.md index 2a543a31f805ca34c9535199fb509b70d62c4117..b49d943102b630a3214882624285a3dd51b21a6c 100644 --- a/zh-cn/application-dev/ability-deprecated/fa-serviceability.md +++ b/zh-cn/application-dev/ability-deprecated/fa-serviceability.md @@ -59,7 +59,7 @@ onCommand()与onConnect()的区别在于: { "name": ".ServiceAbility", "type": "service", - "exported": true + "visible": true ... } ] diff --git a/zh-cn/application-dev/ability-deprecated/stage-ability.md b/zh-cn/application-dev/ability-deprecated/stage-ability.md index f7030e2595f0d70d1711d9db1f87d68f8afd41e6..442aae3e01f3d0f24cc16c988d03e25d1f8e24b4 100644 --- a/zh-cn/application-dev/ability-deprecated/stage-ability.md +++ b/zh-cn/application-dev/ability-deprecated/stage-ability.md @@ -12,9 +12,9 @@ Ability支持单实例、多实例和指定实例3种启动模式,在module.js | 启动模式 | 描述 |说明 | | ----------- | ------- |---------------- | -| multiton | 标准模式 | 每次startAbility都会启动一个新的实例。 | +| multiton | 多实例模式 | 每次startAbility都会启动一个新的实例。 | | singleton | 单实例模式 | 系统中只存在唯一一个实例,startAbility时,如果已存在,则复用系统中的唯一一个实例。 | -| specified | 指定实例 | 运行时由Ability内部业务决定是否创建多实例。 | +| specified | 指定实例模式 | 运行时由Ability内部业务决定是否创建多实例。 | 缺省情况下是singleton模式,module.json5示例如下: ```json diff --git a/zh-cn/application-dev/application-models/create-pageability.md b/zh-cn/application-dev/application-models/create-pageability.md index 23e4d78851a0f9e6cfbda99513a10c65a5bccab4..c943dceb878d97e47aca376852967bf5ebb957b8 100644 --- a/zh-cn/application-dev/application-models/create-pageability.md +++ b/zh-cn/application-dev/application-models/create-pageability.md @@ -47,7 +47,7 @@ PageAbility创建成功后,其abilities相关的配置项在config.json中体 } ], "orientation": "unspecified", - "exported": true, + "visible": true, "srcPath": "MainAbility", "name": ".MainAbility", "srcLanguage": "ets", diff --git a/zh-cn/application-dev/application-models/create-serviceability.md b/zh-cn/application-dev/application-models/create-serviceability.md index f1152b65ebac9cb005f6ae6710b2e1fb3e7cc843..2fb1b03cc53a166951c620ff31986a9fd5652a95 100644 --- a/zh-cn/application-dev/application-models/create-serviceability.md +++ b/zh-cn/application-dev/application-models/create-serviceability.md @@ -40,7 +40,7 @@ 2. 注册ServiceAbility。 - ServiceAbility需要在应用配置文件config.json中进行注册,注册类型type需要设置为service。"exported"属性表示ServiceAbility是否可以被其他应用调用,true表示可以被其他应用调用,false表示不能被其他应用调用(仅应用内可以调用)。若ServiceAbility需要被其他应用调用,注册ServiceAbility时需要设置"exported"为true,同时需要设置支持关联启动。ServiceAbility的启动规则详见[组件启动规则](component-startup-rules.md)章节。 + ServiceAbility需要在应用配置文件config.json中进行注册,注册类型type需要设置为service。"visible"属性表示ServiceAbility是否可以被其他应用调用,true表示可以被其他应用调用,false表示不能被其他应用调用(仅应用内可以调用)。若ServiceAbility需要被其他应用调用,注册ServiceAbility时需要设置"visible"为true,同时需要设置支持关联启动。ServiceAbility的启动规则详见[组件启动规则](component-startup-rules.md)章节。 ```json { @@ -53,7 +53,7 @@ "icon": "$media:icon", "description": "hap sample empty service", "type": "service", - "exported": true + "visible": true } ] } diff --git a/zh-cn/application-dev/application-models/dataability-configuration.md b/zh-cn/application-dev/application-models/dataability-configuration.md index 0e162c9d2502108de467e751c64d6a859f42c620..ef1f8583d77238414c0185d080bdfd9dce15d92a 100644 --- a/zh-cn/application-dev/application-models/dataability-configuration.md +++ b/zh-cn/application-dev/application-models/dataability-configuration.md @@ -38,7 +38,7 @@ URI示例: | "name" | Ability名称。 | | "type" | UIAbility类型,DataAbility的类型为"data"。 | | "uri" | 通信使用的URI。 | -| "exported" | 对其他应用是否可见,设置为true时,DataAbility才能与其他应用进行通信传输数据。 | +| "visible" | 对其他应用是否可见,设置为true时,DataAbility才能与其他应用进行通信传输数据。 | config.json配置样例 @@ -51,7 +51,7 @@ config.json配置样例 "srcLanguage": "ets", "description": "$string:description_dataability", "type": "data", - "exported": true, + "visible": true, "uri": "dataability://ohos.samples.etsdataability.DataAbility" }] ``` diff --git a/zh-cn/application-dev/application-models/dataability-permission-control.md b/zh-cn/application-dev/application-models/dataability-permission-control.md index 9d1a460a01cbb83f15084b161ecd4a4239bc8f6f..6e377d16fc71ba83cc394c42b11c97583497f0cc 100644 --- a/zh-cn/application-dev/application-models/dataability-permission-control.md +++ b/zh-cn/application-dev/application-models/dataability-permission-control.md @@ -17,7 +17,7 @@ DataAbility作为服务端,在被拉起的时候,会根据config.json里面 "srcLanguage": "ets", "description": "$string:description_dataability", "type": "data", - "exported": true, + "visible": true, "uri": "dataability://ohos.samples.etsdataability.DataAbility", "readPermission":"ohos.permission.READ_CONTACTS", "writePermission":"ohos.permission.WRITE_CONTACTS" diff --git a/zh-cn/application-dev/application-models/figures/standard-mode.png b/zh-cn/application-dev/application-models/figures/standard-mode.png deleted file mode 100644 index f392471c0361cbf04e531b12403b7b00d773bef5..0000000000000000000000000000000000000000 Binary files a/zh-cn/application-dev/application-models/figures/standard-mode.png and /dev/null differ diff --git a/zh-cn/application-dev/application-models/figures/uiability-launch-type1.gif b/zh-cn/application-dev/application-models/figures/uiability-launch-type1.gif new file mode 100644 index 0000000000000000000000000000000000000000..941f5de94532129d78965bb8a83b786a6ce7bcd0 Binary files /dev/null and b/zh-cn/application-dev/application-models/figures/uiability-launch-type1.gif differ diff --git a/zh-cn/application-dev/application-models/figures/uiability-launch-type1.png b/zh-cn/application-dev/application-models/figures/uiability-launch-type1.png deleted file mode 100644 index f282915d8c5be11fdc8ce07fb0f42b0d8c562a8c..0000000000000000000000000000000000000000 Binary files a/zh-cn/application-dev/application-models/figures/uiability-launch-type1.png and /dev/null differ diff --git a/zh-cn/application-dev/application-models/figures/uiability-launch-type2.gif b/zh-cn/application-dev/application-models/figures/uiability-launch-type2.gif new file mode 100644 index 0000000000000000000000000000000000000000..89a2f8b3ea5d486f74e9536442141b1822f61082 Binary files /dev/null and b/zh-cn/application-dev/application-models/figures/uiability-launch-type2.gif differ diff --git a/zh-cn/application-dev/application-models/figures/uiability-launch-type2.png b/zh-cn/application-dev/application-models/figures/uiability-launch-type2.png deleted file mode 100644 index 43cd96e6e4cbcc2a291e08d109d4f8958f47a1e6..0000000000000000000000000000000000000000 Binary files a/zh-cn/application-dev/application-models/figures/uiability-launch-type2.png and /dev/null differ diff --git a/zh-cn/application-dev/application-models/figures/uiability-launch-type3.gif b/zh-cn/application-dev/application-models/figures/uiability-launch-type3.gif new file mode 100644 index 0000000000000000000000000000000000000000..4e9de02d3fb35798b3214f79c6458b3cbbcb4cb1 Binary files /dev/null and b/zh-cn/application-dev/application-models/figures/uiability-launch-type3.gif differ diff --git a/zh-cn/application-dev/application-models/lifecycleapp-switch.md b/zh-cn/application-dev/application-models/lifecycleapp-switch.md index c49ad78ea70e4e01048065885987b87720dc9b74..5d6c875c7ef7f0b51feaae73b373a2554b8e0ece 100644 --- a/zh-cn/application-dev/application-models/lifecycleapp-switch.md +++ b/zh-cn/application-dev/application-models/lifecycleapp-switch.md @@ -1,17 +1,17 @@ # LifecycleApp接口切换 - | FA模型接口 | Stage模型接口对应d.ts文件 | Stage模型对应接口 | +| FA模型接口 | Stage模型接口对应d.ts文件 | Stage模型对应接口 | | -------- | -------- | -------- | | onShow?(): void; | \@ohos.window.d.ts | [on(eventType: 'windowStageEvent', callback: Callback<WindowStageEventType>): void;](../reference/apis/js-apis-window.md#onwindowstageevent9)
监听[FOREGROUND](../reference/apis/js-apis-window.md#windowstageeventtype9)切到前台状态 | | onHide?(): void; | \@ohos.window.d.ts | [on(eventType: 'windowStageEvent', callback: Callback<WindowStageEventType>): void;](../reference/apis/js-apis-window.md#onwindowstageevent9)
监听[BACKGROUND](../reference/apis/js-apis-window.md#windowstageeventtype9)切到后台状态 | -| onDestroy?(): void; | \@ohos.app.ability.UIAbility.d.ts | [onDestroy(): void;](../reference/apis/js-apis-app-ability-uiAbility.md#abilityondestroy) | +| onDestroy?(): void; | \@ohos.app.ability.UIAbility.d.ts | [onDestroy(): void;](../reference/apis/js-apis-app-ability-uiAbility.md#abilityondestroy) | | onCreate?(): void; | \@ohos.app.ability.UIAbility.d.ts | [onCreate(want: Want, param: AbilityConstant.LaunchParam): void;](../reference/apis/js-apis-app-ability-uiAbility.md#abilityoncreate) | | onWindowDisplayModeChanged?(isShownInMultiWindow: boolean, newConfig: resourceManager.Configuration): void; | Stage模型无对应接口 | 暂时未提供对应接口 | | onStartContinuation?(): boolean; | Stage模型无对应接口 | Stage模型上,应用无需感知迁移是否成功(由应用发起迁移请求时感知),onStartContinuation废弃 | | onSaveData?(data: Object): boolean; | \@ohos.app.ability.UIAbility.d.ts | [onContinue(wantParam : {[key: string]: any}): AbilityConstant.OnContinueResult;](../reference/apis/js-apis-app-ability-uiAbility.md#abilityoncontinue) | | onCompleteContinuation?(result: number): void; | application\ContinueCallback.d.ts | [onContinueDone(result: number): void;](../reference/apis/js-apis-distributedMissionManager.md#continuecallback) | -| onRestoreData?(data: Object): void; | \@ohos.app.ability.UIAbility.d.ts | [onCreate(want: Want, param: AbilityConstant.LaunchParam): void;](../reference/apis/js-apis-app-ability-uiAbility.md#abilityoncreate)
[onNewWant(want: Want, launchParams: AbilityConstant.LaunchParam): void;](../reference/apis/js-apis-app-ability-uiAbility.md#abilityonnewwant)
标准实例模式Ability迁移目标端在onCreate回调中完成数据恢复,单实例应用迁移目标端在onCreate回调中完成数据恢复,回调中通过判断launchParam.launchReason可获取迁移启动的场景,从而可以从Want中获取迁移前保存的数据 | +| onRestoreData?(data: Object): void; | \@ohos.app.ability.UIAbility.d.ts | [onCreate(want: Want, param: AbilityConstant.LaunchParam): void;](../reference/apis/js-apis-app-ability-uiAbility.md#abilityoncreate)
[onNewWant(want: Want, launchParams: AbilityConstant.LaunchParam): void;](../reference/apis/js-apis-app-ability-uiAbility.md#abilityonnewwant)
多实例模式Ability迁移目标端在onCreate回调中完成数据恢复,单实例应用迁移目标端在onCreate回调中完成数据恢复,回调中通过判断launchParam.launchReason可获取迁移启动的场景,从而可以从Want中获取迁移前保存的数据 | | onRemoteTerminated?(): void; | application\ContinueCallback.d.ts | [onContinueDone(result: number): void;](../reference/apis/js-apis-distributedMissionManager.md#continuecallback) | | onSaveAbilityState?(outState: PacMap): void; | \@ohos.app.ability.UIAbility.d.ts | [onSaveState(reason: AbilityConstant.StateType, wantParam : {[key: string]: any}): AbilityConstant.OnSaveResult;](../reference/apis/js-apis-app-ability-uiAbility.md#abilityonsavestate) | | onRestoreAbilityState?(inState: PacMap): void; | \@ohos.app.ability.UIAbility.d.ts | [onCreate(want: Want, param: AbilityConstant.LaunchParam): void;](../reference/apis/js-apis-app-ability-uiAbility.md#abilityoncreate)
应用重启后会触发Ability的onCreate方法,通过判断launchParam.launchReason可获取自恢复的场景,从而可以从Want中获取重启前保存的数据 | diff --git a/zh-cn/application-dev/application-models/pageability-launch-type.md b/zh-cn/application-dev/application-models/pageability-launch-type.md index 8e666167314e1c1af2274ff7b54ba0549968809d..41f49ebdb604130d2cf3eca1fa7110bfb7a5657c 100644 --- a/zh-cn/application-dev/application-models/pageability-launch-type.md +++ b/zh-cn/application-dev/application-models/pageability-launch-type.md @@ -1,7 +1,7 @@ # PageAbility的启动模式 -启动模式对应PageAbility被启动时的行为,支持单实例模式、标准模式两种启动模式。 +启动模式对应PageAbility被启动时的行为,支持单实例模式、多实例模式两种启动模式。 **表1** PageAbility的启动模式 @@ -9,7 +9,7 @@ | 启动模式 | 描述 | 说明 | | -------- | -------- | -------- | | singleton | 单实例模式 | 每次调用startAbility方法时,如果应用进程中该类型的Ability实例已经存在,则复用已有的实例,系统中只存在唯一一个实例。表现为在最近任务列表中只有一个Ability实例。
典型场景:当用户打开视频播放应用并观看视频,回到桌面后,再次打开视频播放应用,应用仍为回到桌面之前正在观看的视频。 | -| multiton | 标准模式 | 缺省启动模式。每次调用startAbility方法时,都会在应用进程中创建一个新的Ability实例。表现为在最近任务列表中可以看到有多个该类型的Ability实例。
典型场景:当用户打开文档应用,选择新建文档的时候,每次点击新建文档,都会创建一个新的文档任务,在最近任务列表中可以看到多个新建的文档任务。 | +| standard | 多实例模式 | 缺省启动模式。每次调用startAbility方法时,都会在应用进程中创建一个新的Ability实例。表现为在最近任务列表中可以看到有多个该类型的Ability实例。
典型场景:当用户打开文档应用,选择新建文档的时候,每次点击新建文档,都会创建一个新的文档任务,在最近任务列表中可以看到多个新建的文档任务。 | 应用开发者可在config.json配置文件中通过“launchType”配置启动模式。示例如下: @@ -21,8 +21,8 @@ "abilities": [ { // singleton: 单实例模式 - // multiton: 标准模式 - "launchType": "multiton", + // standard: 多实例模式 + "launchType": "standard", // ... } ] @@ -31,7 +31,7 @@ ``` -启动PageAbility时,对于标准启动模式(多实例启动模式)以及单实例启动模式首次启动,[PageAbility生命周期回调](pageability-lifecycle.md#table13118194914476)均会被触发。单实例非首次启动时不会再触发onCreate()接口,而是触发onNewWant(),onNewWant()的说明如下表2所示。 +启动PageAbility时,对于多实例启动模式启动,以及单实例启动模式首次启动,[PageAbility生命周期回调](pageability-lifecycle.md#table13118194914476)均会被触发。单实例非首次启动时不会再触发onCreate()接口,而是触发onNewWant(),onNewWant()的说明如下表2所示。 **表2** 单实例启动模式特有的回调函数说明 diff --git a/zh-cn/application-dev/application-models/start-page.md b/zh-cn/application-dev/application-models/start-page.md index 418a5985ae5831d062d20b30482b3b13b983147a..7fd5a774ff87f2aa5e568e3f530e022388955e31 100644 --- a/zh-cn/application-dev/application-models/start-page.md +++ b/zh-cn/application-dev/application-models/start-page.md @@ -70,7 +70,7 @@ struct Index { ``` -当PageAbility的启动模式设置为标准模式或为首次启动单例模式的PageAbility时(具体设置方法和典型场景示例见[PageAbility的启动模式](pageability-launch-type.md)),在调用方PageAbility中,通过want中的parameters参数传递要启动的指定页面的pages信息,调用startAbility()方法启动PageAbility。被调用方可以在onCreate中使用featureAbility的getWant方法获取want,再通过调用router.push实现启动指定页面。 +当PageAbility的启动模式设置为多实例模式,或为首次启动的单实例模式的PageAbility时(具体设置方法和典型场景示例见[PageAbility的启动模式](pageability-launch-type.md)),在调用方PageAbility中,通过want中的parameters参数传递要启动的指定页面的pages信息,调用startAbility()方法启动PageAbility。被调用方可以在onCreate中使用featureAbility的getWant方法获取want,再通过调用router.push实现启动指定页面。 调用方的页面中实现按钮点击触发startAbility方法启动目标端PageAbility,startAbility方法的入参want中携带指定页面信息,示例代码如下: 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 77589f47bd90b8af1fa2c5a647bb004f85992d5f..f806a642db085e84dedcdee359a13505b7f5557d 100644 --- a/zh-cn/application-dev/application-models/uiability-launch-type.md +++ b/zh-cn/application-dev/application-models/uiability-launch-type.md @@ -6,7 +6,7 @@ UIAbility的启动模式是指UIAbility实例在启动时的不同呈现状态 - [singleton(单实例模式)](#singleton启动模式) -- [multiton(标准实例模式)](#multiton启动模式) +- [multiton(多实例模式)](#multiton启动模式) - [specified(指定实例模式)](#specified启动模式) @@ -15,16 +15,14 @@ UIAbility的启动模式是指UIAbility实例在启动时的不同呈现状态 singleton启动模式为单实例模式,也是默认情况下的启动模式。 -每次调用startAbility()方法时,如果应用进程中该类型的UIAbility实例已经存在,则复用系统中的UIAbility实例。系统中只存在唯一一个该UIAbility实例,即在最近任务列表中只存在一个该类型的UIAbility实例。 +每次调用[startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法时,如果应用进程中该类型的UIAbility实例已经存在,则复用系统中的UIAbility实例。系统中只存在唯一一个该UIAbility实例,即在最近任务列表中只存在一个该类型的UIAbility实例。 - **图1** 单实例模式演示效果 +**图1** 单实例模式演示效果 +![uiability-launch-type1](figures/uiability-launch-type1.gif) - ![uiability-launch-type1](figures/uiability-launch-type1.png) +> **说明**:应用的UIAbility实例已创建,该UIAbility配置为单实例模式,再次调用[startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法启动该UIAbility实例。由于启动的还是原来的UIAbility实例,并未重新创建一个新的UIAbility实例,此时只会进入该UIAbility的[onNewWant()](../reference/apis/js-apis-app-ability-uiAbility.md#abilityonnewwant)回调,不会进入其[onCreate()](../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityoncreate)和[onWindowStageCreate()](../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityonwindowstagecreate)生命周期回调。 -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 应用的UIAbility实例已创建,该UIAbility配置为单实例模式,再次调用startAbility()方法启动该UIAbility实例,此时只会进入该UIAbility的[onNewWant()](../reference/apis/js-apis-app-ability-uiAbility.md#abilityonnewwant)回调,不会进入其onCreate()和onWindowStageCreate()生命周期回调。 - -如果需要使用singleton启动模式,在[module.json5配置文件](../quick-start/module-configuration-file.md)中的"launchType"字段配置为"singleton"即可。 +如果需要使用singleton启动模式,在[module.json5配置文件](../quick-start/module-configuration-file.md)中的`launchType`字段配置为`singleton`即可。 ```json @@ -44,13 +42,12 @@ singleton启动模式为单实例模式,也是默认情况下的启动模式 ## multiton启动模式 -multiton启动模式为标准实例模式,每次调用startAbility()方法时,都会在应用进程中创建一个新的该类型UIAbility实例。即在最近任务列表中可以看到有多个该类型的UIAbility实例。这种情况下可以将UIAbility配置为multiton(标准实例模式)。 - - **图2** 标准实例模式演示效果 +multiton启动模式为多实例模式,每次调用[startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法时,都会在应用进程中创建一个新的该类型UIAbility实例。即在最近任务列表中可以看到有多个该类型的UIAbility实例。这种情况下可以将UIAbility配置为multiton(多实例模式)。 - ![multiton-mode](figures/standard-mode.png) +**图2** 多实例模式演示效果 +![uiability-launch-type2](figures/uiability-launch-type2.gif) -multiton启动模式的开发使用,在[module.json5配置文件](../quick-start/module-configuration-file.md)中的"launchType"字段配置为"multiton"即可。 +multiton启动模式的开发使用,在[module.json5配置文件](../quick-start/module-configuration-file.md)中的`launchType`字段配置为`multiton`即可。 ```json @@ -72,19 +69,13 @@ multiton启动模式的开发使用,在[module.json5配置文件](../quick-sta specified启动模式为指定实例模式,针对一些特殊场景使用(例如文档应用中每次新建文档希望都能新建一个文档实例,重复打开一个已保存的文档希望打开的都是同一个文档实例)。 -在UIAbility实例创建之前,允许开发者为该实例创建一个唯一的字符串Key,创建的UIAbility实例绑定Key之后,后续每次调用startAbility()方法时,都会询问应用使用哪个Key对应的UIAbility实例来响应startAbility()请求。运行时由UIAbility内部业务决定是否创建多实例,如果匹配有该UIAbility实例的Key,则直接拉起与之绑定的UIAbility实例,否则创建一个新的UIAbility实例。 - - **图3** 指定实例模式演示效果 - - ![uiability-launch-type2](figures/uiability-launch-type2.png) +**图3** 指定实例模式演示效果 +![uiability-launch-type3](figures/uiability-launch-type3.gif) -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 应用的UIAbility实例已创建,该UIAbility配置为指定实例模式,再次调用startAbility()方法启动该UIAbility实例,且[AbilityStage](abilitystage.md)的[onAcceptWant()](../reference/apis/js-apis-app-ability-abilityStage.md#abilitystageonacceptwant)回调匹配到一个已创建的UIAbility实例。此时,再次启动该UIAbility时,只会进入该UIAbility的[onNewWant()](../reference/apis/js-apis-app-ability-uiAbility.md#abilityonnewwant)回调,不会进入其onCreate()和onWindowStageCreate()生命周期回调。 +例如有两个UIAbility:EntryAbility和SpecifiedAbility,SpecifiedAbility配置为指定实例模式启动,需要从EntryAbility的页面中启动SpecifiedAbility。 -例如有两个UIAbility:EntryAbility和FuncAbility,FuncAbility配置为specified启动模式,需要从EntryAbility的页面中启动FuncAbility。 +1. 在SpecifiedAbility中,将[module.json5配置文件](../quick-start/module-configuration-file.md)的`launchType`字段配置为`specified`。 -1. 在FuncAbility中,将[module.json5配置文件](../quick-start/module-configuration-file.md)的"launchType"字段配置为"specified"。 - ```json { "module": { @@ -99,8 +90,8 @@ specified启动模式为指定实例模式,针对一些特殊场景使用( } ``` -2. 在EntryAbility中,调用startAbility()方法时,在want参数中,增加一个自定义参数来区别UIAbility实例,例如增加一个"instanceKey"自定义参数。 - +2. 在创建UIAbility实例之前,开发者可以为该实例指定一个唯一的字符串Key,这样在调用[startAbility()](.../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法时,应用就可以根据指定的Key来识别响应请求的UIAbility实例。在EntryAbility中,调用[startAbility()](.../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法时,可以在`want`参数中增加一个自定义参数,例如`instanceKey`,以此来区分不同的UIAbility实例。 + ```ts // 在启动指定实例模式的UIAbility时,给每一个UIAbility实例配置一个独立的Key标识 // 例如在文档使用场景中,可以用文档路径作为Key标识 @@ -111,13 +102,13 @@ specified启动模式为指定实例模式,针对一些特殊场景使用( let want = { deviceId: '', // deviceId为空表示本设备 bundleName: 'com.example.myapplication', - abilityName: 'FuncAbility', + abilityName: 'SpecifiedAbility', moduleName: 'module1', // moduleName非必选 parameters: { // 自定义信息 instanceKey: getInstance(), }, } - // context为调用方UIAbility的AbilityContext + // context为调用方UIAbility的UIAbilityContext this.context.startAbility(want).then(() => { // ... }).catch((err) => { @@ -125,18 +116,20 @@ specified启动模式为指定实例模式,针对一些特殊场景使用( }) ``` -3. 由于FuncAbility的启动模式配置为了指定实例启动模式,在FuncAbility启动之前,会先进入其对应的AbilityStage的[onAcceptWant()](../reference/apis/js-apis-app-ability-abilityStage.md#abilitystageonacceptwant)生命周期回调中,解析传入的want参数,获取"instanceKey"自定义参数。根据业务需要通过AbilityStage的[onAcceptWant()](../reference/apis/js-apis-app-ability-abilityStage.md#abilitystageonacceptwant)生命周期回调返回一个字符串Key标识。[如果返回的Key对应一个已启动的UIAbility](mission-management-launch-type.md#fig14520125175314),则会将之前的UIAbility拉回前台并获焦,而不创建新的实例,否则创建新的实例并启动。 - +3. 由于SpecifiedAbility的启动模式被配置为指定实例启动模式,因此在SpecifiedAbility启动之前,会先进入对应的AbilityStage的[onAcceptWant()](../reference/apis/js-apis-app-ability-abilityStage.md#abilitystageonacceptwant)生命周期回调中,以获取该UIAbility实例的Key值。然后系统会自动匹配,如果存在与该UIAbility实例匹配的Key,则会启动与之绑定的UIAbility实例,并进入该UIAbility实例的[onNewWant()](../reference/apis/js-apis-app-ability-uiAbility.md#abilityonnewwant)回调函数;否则会创建一个新的UIAbility实例,并进入该UIAbility实例的[onCreate()](../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityoncreate)回调函数和[onWindowStageCreate()](../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityonwindowstagecreate)回调函数。 + + 示例代码中,通过实现[onAcceptWant()](../reference/apis/js-apis-app-ability-abilityStage.md#abilitystageonacceptwant)生命周期回调函数,解析传入的`want`参数,获取自定义参数`instanceKey`。业务逻辑会根据这个参数返回一个字符串Key,用于标识当前UIAbility实例。如果返回的Key已经对应一个已启动的UIAbility实例,系统会将该UIAbility实例拉回前台并获焦,而不会创建新的实例。如果返回的Key没有对应已启动的UIAbility实例,则系统会创建新的UIAbility实例并启动。 + ```ts import AbilityStage from '@ohos.app.ability.AbilityStage'; export default class MyAbilityStage extends AbilityStage { onAcceptWant(want): string { // 在被调用方的AbilityStage中,针对启动模式为specified的UIAbility返回一个UIAbility实例对应的一个Key值 - // 当前示例指的是module1 Module的FuncAbility - if (want.abilityName === 'FuncAbility') { + // 当前示例指的是module1 Module的SpecifiedAbility + if (want.abilityName === 'SpecifiedAbility') { // 返回的字符串Key标识为自定义拼接的字符串内容 - return `ControlModule_EntryAbilityInstance_${want.parameters.instanceKey}`; + return `SpecifiedAbilityInstance_${want.parameters.instanceKey}`; } return ''; @@ -144,13 +137,16 @@ specified启动模式为指定实例模式,针对一些特殊场景使用( } ``` - 例如在文档应用中,可以对不同的文档实例内容绑定不同的Key值。当每次新建文档的时候,可以传入不同的新Key值(如可以将文件的路径作为一个Key标识),此时AbilityStage中启动UIAbility时都会创建一个新的UIAbility实例;当新建的文档保存之后,回到桌面,或者新打开一个已保存的文档,回到桌面,此时再次打开该已保存的文档,此时AbilityStage中再次启动该UIAbility时,打开的仍然是之前原来已保存的文档界面。 + > **说明:** + > + > 1. 当应用的UIAbility实例已经被创建,并且配置为指定实例模式时,如果再次调用[startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法启动该UIAbility实例,且[AbilityStage](../reference/apis/js-apis-app-ability-abilityStage.md)的[onAcceptWant()](../reference/apis/js-apis-app-ability-abilityStage.md#abilitystageonacceptwant)回调匹配到一个已创建的UIAbility实例,则系统会启动原来的UIAbility实例,并且不会重新创建一个新的UIAbility实例。此时,该UIAbility实例的[onNewWant()](../reference/apis/js-apis-app-ability-uiAbility.md#abilityonnewwant)回调会被触发,而不会触发[onCreate()](../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityoncreate)和[onWindowStageCreate()](../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityonwindowstagecreate)生命周期回调。 + > 2. DevEco Studio默认工程中未自动生成AbilityStage,AbilityStage文件的创建请参见[AbilityStage组件容器](abilitystage.md)。 - 以如下步骤所示进行举例说明。 - 1. 打开文件A,对应启动一个新的UIAbility实例,例如启动“UIAbility实例1”。 - - 2. 在最近任务列表中关闭文件A的进程,此时UIAbility实例1被销毁,回到桌面,再次打开文件A,此时对应启动一个新的UIAbility实例,例如启动“UIAbility实例2”。 - - 3. 回到桌面,打开文件B,此时对应启动一个新的UIAbility实例,例如启动“UIAbility实例3”。 - - 4. 回到桌面,再次打开文件A,此时对应启动的还是之前的“UIAbility实例2”。 + 例如在文档应用中,可以为不同的文档实例内容绑定不同的Key值。每次新建文档时,可以传入一个新的Key值(例如可以将文件的路径作为一个Key标识),此时AbilityStage中启动UIAbility时都会创建一个新的UIAbility实例;当新建的文档保存之后,回到桌面,或者新打开一个已保存的文档,回到桌面,此时再次打开该已保存的文档,此时AbilityStage中再次启动该UIAbility时,打开的仍然是之前原来已保存的文档界面。 + + 以如下步骤所示进行举例说明。 + + 1. 打开`文件A`,对应启动一个新的UIAbility实例,例如启动`UIAbility实例1`。 + 2. 在最近任务列表中关闭`文件A`的任务进程,此时`UIAbility实例1`被销毁,回到桌面,再次打开`文件A`,此时对应启动一个新的UIAbility实例,例如启动`UIAbility实例2`。 + 3. 回到桌面,打开`文件B`,此时对应启动一个新的UIAbility实例,例如启动`UIAbility实例3`。 + 4. 回到桌面,再次打开`文件A`,此时仍然启动之前的`UIAbility实例2`,因为系统会自动匹配UIAbility实例的Key值,如果存在与之匹配的Key,则会启动与之绑定的UIAbility实例。在此例中,之前启动的`UIAbility实例2`与`文件A`绑定的Key是相同的,因此系统会拉回`UIAbility实例2`并让其获焦,而不会创建新的实例。 diff --git a/zh-cn/application-dev/quick-start/application-configuration-file-overview-fa.md b/zh-cn/application-dev/quick-start/application-configuration-file-overview-fa.md index 7b3a819c59946bf05f605ae4c282a5e13908cd72..c7e0627fba1d5a7f2197d12cf5393854bc4cda3d 100644 --- a/zh-cn/application-dev/quick-start/application-configuration-file-overview-fa.md +++ b/zh-cn/application-dev/quick-start/application-configuration-file-overview-fa.md @@ -74,7 +74,7 @@ config.json示例: } ], "orientation": "unspecified", - "exported": true, + "visible": true, "srcPath": "MainAbility_entry", "name": ".MainAbility_entry", "srcLanguage": "ets", @@ -85,7 +85,7 @@ config.json示例: // $string:MainAbility_entry_label为资源索引 "label": "$string:MainAbility_entry_label", "type": "page", - "launchType": "multiton" + "launchType": "standard" } ], "distro": { diff --git a/zh-cn/application-dev/quick-start/module-structure.md b/zh-cn/application-dev/quick-start/module-structure.md index 8509ac096b2c596ec4927282fbe1097ec1e13dcf..94eda3abb478ab08427fe308e88a63f802e3fce0 100644 --- a/zh-cn/application-dev/quick-start/module-structure.md +++ b/zh-cn/application-dev/quick-start/module-structure.md @@ -48,7 +48,7 @@ module示例: } ], "orientation": "unspecified", - "exported": true, + "visible": true, "srcPath": "EntryAbility", "name": ".EntryAbility", "srcLanguage": "ets", @@ -57,7 +57,7 @@ module示例: "formsEnabled": false, "label": "$string:MainAbility_label", "type": "page", - "launchType": "multiton" + "launchType": "standard" } ], "distro": { @@ -263,8 +263,8 @@ OpenHarmony系统对无图标应用严格管控。如果HAP中没有配置入口 | icon | 标识Ability图标资源文件的索引。取值示例:$media:ability_icon。如果在该Ability的skills属性中,actions的取值包含 "action.system.home",entities取值中包含"entity.system.home",则该Ability的icon将同时作为应用的icon。如果存在多个符合条件的Ability,则取位置靠前的Ability的icon作为应用的icon。
说明:应用的"icon"和"label"是用户可感知配置项,需要区别于当前所有已有的应用"icon"或"label"(至少有一个不同)。 | 字符串 | 可缺省,缺省值为空。 | | label | 标识Ability对用户显示的名称。取值可以是Ability名称,也可以是对该名称的资源索引,以支持多语言。如果在该Ability的skills属性中,actions的取值包含 "action.system.home",entities取值中包含"entity.system.home",则该Ability的label将同时作为应用的label。如果存在多个符合条件的Ability,则取位置靠前的Ability的label作为应用的label。
说明: 应用的"icon"和"label"是用户可感知配置项,需要区别于当前所有已有的应用"icon"或"label"(至少有一个不同)。该标签为资源文件中定义的字符串的引用,或以"{}"包括的字符串。该标签最大长度为255个字节。 | 字符串 | 可缺省,缺省值为空。 | | uri | 标识Ability的统一资源标识符。该标签最大长度为255个字节。 | 字符串 | 可缺省,对于data类型的Ability不可缺省。 | -| launchType | 标识Ability的启动模式,支持"multiton"和"singleton"两种模式:
multiton:表示该Ability可以有多实例。该模式适用于大多数应用场景。
singleton:表示该Ability在所有任务栈中仅可以有一个实例。例如,具有全局唯一性的呼叫来电界面即采用"singleton"模式。该标签仅适用于默认设备、平板、智慧屏、车机、智能穿戴。 | 字符串 | 可缺省,缺省值为"singleton"。 | -| exported | 标识Ability是否可以被其他应用调用。
true:可以被其他应用调用。
false:不能被其他应用调用。 | 布尔类型 | 可缺省,缺省值为"false"。 | +| launchType | 标识Ability的启动模式,支持"standard"和"singleton"两种模式:
standard:表示该Ability可以有多实例。该模式适用于大多数应用场景。
singleton:表示该Ability在所有任务栈中仅可以有一个实例。例如,具有全局唯一性的呼叫来电界面即采用"singleton"模式。该标签仅适用于默认设备、平板、智慧屏、车机、智能穿戴。 | 字符串 | 可缺省,缺省值为"singleton"。 | +| visible | 标识Ability是否可以被其他应用调用。
true:可以被其他应用调用。
false:不能被其他应用调用。 | 布尔类型 | 可缺省,缺省值为"false"。 | | permissions | 标识其他应用的Ability调用此Ability时需要申请的权限集合,一个数组元素为一个权限名称。通常采用反向域名格式(最大255字节),取值为系统预定义的权限。 | 字符串数组 | 可缺省,缺省值为空。 | |skills | 标识Ability能够接收的want的特征。 | 对象数组 | 可缺省,缺省值为空。 | | deviceCapability | 标识Ability运行时要求设备具有的能力,采用字符串数组的格式表示。该标签为数组,支持最多配置512个元素,单个元素最大字节长度为64。 | 字符串数组 | 可缺省,缺省值为空。 | @@ -277,7 +277,7 @@ OpenHarmony系统对无图标应用严格管控。如果HAP中没有配置入口 | writePermission | 标识向Ability写数据所需的权限。该标签仅适用于data类型的Ability。取值为长度不超过255字节的字符串。 | 字符串 | 可缺省,缺省为空。 | | configChanges | 标识Ability关注的系统配置集合。当已关注的配置发生变更后,Ability会收到onConfigurationUpdated回调。取值范围:
mcc:表示IMSI移动设备国家/地区代码(MCC)发生变更。典型场景:检测到SIM并更新MCC。
mnc:IMSI移动设备网络代码(MNC)发生变更。典型场景:检测到SIM并更新MNC。
locale:表示语言区域发生变更。典型场景:用户已为设备文本的文本显示选择新的语言类型。
layout:表示屏幕布局发生变更。典型场景:当前有不同的显示形态都处于活跃状态。
fontSize:表示字号发生变更。典型场景:用户已设置新的全局字号。
orientation:表示屏幕方向发生变更。典型场景:用户旋转设备。
density:表示显示密度发生变更。典型场景:用户可能指定不同的显示比例,或当前有不同的显示形态同时处于活跃状态。
size:显示窗口大小发生变更。
smallestSize:显示窗口较短边的边长发生变更。
colorMode:颜色模式发生变更。 | 字符串数组 | 可缺省,缺省为空。 | | mission | 标识Ability指定的任务栈。该标签仅适用于page类型的Ability。默认情况下应用中所有Ability同属一个任务栈。 | 字符串 | 可缺省,缺省为应用的包名。 | -| targetAbility | 标识当前Ability重用的目标Ability。该标签仅适用于page类型的Ability。如果配置了targetAbility属性,则当前Ability(即别名Ability)的属性中仅name、icon、label、exported、permissions、skills生效,其他属性均沿用targetAbility中的属性值。目标Ability必须与别名Ability在同一应用中,且在配置文件中目标Ability必须在别名之前进行声明。 | 字符串 | 可缺省,缺省值为空。表示当前Ability不是一个别名Ability。 | +| targetAbility | 标识当前Ability重用的目标Ability。该标签仅适用于page类型的Ability。如果配置了targetAbility属性,则当前Ability(即别名Ability)的属性中仅name、icon、label、visible、permissions、skills生效,其他属性均沿用targetAbility中的属性值。目标Ability必须与别名Ability在同一应用中,且在配置文件中目标Ability必须在别名之前进行声明。 | 字符串 | 可缺省,缺省值为空。表示当前Ability不是一个别名Ability。 | | formsEnabled | 标识Ability是否支持卡片(forms)功能。该标签仅适用于page类型的Ability。
true:支持卡片能力。
false:不支持卡片能力。 | 布尔值 | 可缺省,缺省值为false。 | | forms | 标识服务卡片的属性。该标签仅当formsEnabled为"true"时,才能生效。 | 对象数组 | 可缺省,缺省值为空。 | | srcLanguage | Ability开发语言的类型,开发者创建工程时由开发者手动选择开发语言。 | 字符串 | 可缺省,缺省值为“js”。 | @@ -308,10 +308,10 @@ abilities示例: "icon": "$media:ic_launcher", // $string:example 为字符串类资源 "label": "$string:example", - "launchType": "multiton", + "launchType": "standard", "orientation": "unspecified", "permissions": [], - "exported": true, + "visible": true, "skills": [ { "actions": [ @@ -338,9 +338,9 @@ abilities示例: "description": "example play ability", "icon": "$media:ic_launcher", "label": "$string:example", - "launchType": "multiton", + "launchType": "standard", "orientation": "unspecified", - "exported": false, + "visible": false, "skills": [ { "actions": [ @@ -361,7 +361,7 @@ abilities示例: "name": ".UserADataAbility", "type": "data", "uri": "dataability://com.example.world.test.UserADataAbility", - "exported": true + "visible": true } ] ``` diff --git a/zh-cn/application-dev/reference/apis/js-apis-inner-application-uiAbilityContext.md b/zh-cn/application-dev/reference/apis/js-apis-inner-application-uiAbilityContext.md index 4a4a289f26ce2e63040c32e451f3010b42b98a4c..eff02851aebfd457571f125d33dca76c70c0a11f 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-inner-application-uiAbilityContext.md +++ b/zh-cn/application-dev/reference/apis/js-apis-inner-application-uiAbilityContext.md @@ -27,7 +27,7 @@ startAbility(want: Want, callback: AsyncCallback<void>): void; 使用规则: - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 + - 目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -94,7 +94,7 @@ startAbility(want: Want, options: StartOptions, callback: AsyncCallback<void& 使用规则: - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 + - 目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -165,7 +165,7 @@ startAbility(want: Want, options?: StartOptions): Promise<void>; 使用规则: - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 + - 目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -244,7 +244,7 @@ startAbilityForResult(want: Want, callback: AsyncCallback<AbilityResult>): 使用规则: - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 + - 目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -315,7 +315,7 @@ startAbilityForResult(want: Want, options: StartOptions, callback: AsyncCallback 使用规则: - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 + - 目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -391,7 +391,7 @@ startAbilityForResult(want: Want, options?: StartOptions): Promise<AbilityRes 使用规则: - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 + - 目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -1597,7 +1597,7 @@ startAbilityByCall(want: Want): Promise<Caller>; 使用规则: - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 + - 目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) **系统能力**:SystemCapability.Ability.AbilityRuntime.Core diff --git a/zh-cn/application-dev/reference/apis/js-apis-router.md b/zh-cn/application-dev/reference/apis/js-apis-router.md index 750dfdba022d958ea701fd96197e4b1da83d9d21..150fa39e4f34552e64dc061f5b72da44a8b70d7c 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-router.md +++ b/zh-cn/application-dev/reference/apis/js-apis-router.md @@ -572,8 +572,8 @@ router.getParams(); | 名称 | 说明 | | -------- | ------------------------------------------------------------ | -| Standard | 标准模式。
目标页面会被添加到页面路由栈顶,无论栈中是否存在相同url的页面。
**说明:** 不使用路由跳转模式时,按标准模式跳转。 | -| Single | 单实例模式。
如果目标页面的url在页面栈中已经存在同url页面,离栈顶最近的页面会被移动到栈顶,移动后的页面为新建页。
如目标页面的url在页面栈中不存在同url页面,按标准模式跳转。 | +| Standard | 多实例模式,也是默认情况下的跳转模式。
目标页面会被添加到页面栈顶,无论栈中是否存在相同url的页面。
**说明:**不使用路由跳转模式时,则按照默认的多实例模式进行跳转。 | +| Single | 单实例模式。
如果目标页面的url已经存在于页面栈中,则会将离栈顶最近的同url页面移动到栈顶,该页面成为新建页。
如果目标页面的url在页面栈中不存在同url页面,则按照默认的多实例模式进行跳转。 | ## 完整示例 diff --git a/zh-cn/application-dev/ui/arkts-page-transition-animation.md b/zh-cn/application-dev/ui/arkts-page-transition-animation.md index 0342e53704d69dde11856ba506d007a784503e1e..8e9880cf37168c705e94f9db4e80dbda2495bb26 100644 --- a/zh-cn/application-dev/ui/arkts-page-transition-animation.md +++ b/zh-cn/application-dev/ui/arkts-page-transition-animation.md @@ -60,7 +60,7 @@ pageTransition() { ``` -假设页面栈为标准实例模式,即页面栈中允许存在重复的页面。可能会有4种场景,对应的页面转场效果如下表。 +假设页面跳转配置为多实例模式,即页面栈中允许存在重复的页面。可能会有4种场景,对应的页面转场效果如下表。 | 路由操作 | 页面A转场效果 | 页面B转场效果 | @@ -118,7 +118,7 @@ pageTransition() { ``` -以上代码则完整的定义了所有可能的页面转场样式。假设页面栈为标准实例模式,即页面栈中允许存在重复的页面。可能会有4种场景,对应的页面转场效果如下表。 +以上代码则完整的定义了所有可能的页面转场样式。假设页面跳转配置为多实例模式,即页面栈中允许存在重复的页面。可能会有4种场景,对应的页面转场效果如下表。 | 路由操作 | 页面A转场效果 | 页面B转场效果 | diff --git a/zh-cn/application-dev/ui/arkts-routing.md b/zh-cn/application-dev/ui/arkts-routing.md index 535cb7fc249663c1d313f6f6a50ebfded3577597..0ee4fd8da20ab6172820da9eb361674f525fe7ba 100644 --- a/zh-cn/application-dev/ui/arkts-routing.md +++ b/zh-cn/application-dev/ui/arkts-routing.md @@ -11,11 +11,11 @@ **图1** 页面跳转 ![router-jump-to-detail](figures/router-jump-to-detail.gif) -Router模块提供了两种跳转模式,分别是[router.pushUrl()](../reference/apis/js-apis-router.md#routerpushurl9)和[router.replaceUrl()](../reference/apis/js-apis-router.md#routerreplaceurl9)。这两种模式决定了目标页是否会替换当前页。 +Router模块提供了两种跳转模式,分别是[router.pushUrl()](../reference/apis/js-apis-router.md#routerpushurl9)和[router.replaceUrl()](../reference/apis/js-apis-router.md#routerreplaceurl9)。这两种模式决定了目标页面是否会替换当前页。 -- router.pushUrl():目标页不会替换当前页,而是压入[页面栈](../application-models/page-mission-stack.md)。这样可以保留当前页的状态,并且可以通过返回键或者调用[router.back()](../reference/apis/js-apis-router.md#routerback)方法返回到当前页。 +- router.pushUrl():目标页面不会替换当前页,而是压入[页面栈](../application-models/page-mission-stack.md)。这样可以保留当前页的状态,并且可以通过返回键或者调用[router.back()](../reference/apis/js-apis-router.md#routerback)方法返回到当前页。 -- router.replaceUrl():目标页会替换当前页,并销毁当前页。这样可以释放当前页的资源,并且无法返回到当前页。 +- router.replaceUrl():目标页面会替换当前页,并销毁当前页。这样可以释放当前页的资源,并且无法返回到当前页。 >**说明:** > @@ -23,9 +23,9 @@ Router模块提供了两种跳转模式,分别是[router.pushUrl()](../referen 同时,Router模块提供了两种实例模式,分别是Standard和Single。这两种模式决定了目标url是否会对应多个实例。 -- Standard:标准实例模式,也是默认情况下的实例模式。每次调用该方法都会新建一个目标页,并压入栈顶。 +- Standard:多实例模式,也是默认情况下的跳转模式。目标页面会被添加到页面栈顶,无论栈中是否存在相同url的页面。 -- Single:单实例模式。即如果目标页的url在页面栈中已经存在同url页面,则离栈顶最近的同url页面会被移动到栈顶,并重新加载;如果目标页的url在页面栈中不存在同url页面,则按照标准模式跳转。 +- Single:单实例模式。如果目标页面的url已经存在于页面栈中,则会将离栈顶最近的同url页面移动到栈顶,该页面成为新建页。如果目标页面的url在页面栈中不存在同url页面,则按照默认的多实例模式进行跳转。 在使用页面路由Router相关功能之前,需要在代码中先导入Router模块。 @@ -54,7 +54,7 @@ import router from '@ohos.router'; >**说明:** > - >标准实例模式下,router.RouterMode.Standard参数可以省略。 + >多实例模式下,router.RouterMode.Standard参数可以省略。 - 场景二:有一个登录页(Login)和一个个人中心页(Profile),希望从登录页成功登录后,跳转到个人中心页。同时,销毁登录页,在返回时直接退出应用。这种场景下,可以使用replaceUrl()方法,并且使用Standard实例模式(或者省略)。 @@ -76,7 +76,7 @@ import router from '@ohos.router'; >**说明:** > - >标准实例模式下,router.RouterMode.Standard参数可以省略。 + >多实例模式下,router.RouterMode.Standard参数可以省略。 - 场景三:有一个设置页(Setting)和一个主题切换页(Theme),希望从设置页点击主题选项,跳转到主题切换页。同时,需要保证每次只有一个主题切换页存在于页面栈中,在返回时直接回到设置页。这种场景下,可以使用pushUrl()方法,并且使用Single实例模式。 @@ -115,7 +115,7 @@ import router from '@ohos.router'; 以上是不带参数传递的场景。 -如果需要在跳转时传递一些数据给目标页,则可以在调用Router模块的方法时,添加一个params属性,并指定一个对象作为参数。例如: +如果需要在跳转时传递一些数据给目标页面,则可以在调用Router模块的方法时,添加一个params属性,并指定一个对象作为参数。例如: ```ts @@ -150,7 +150,7 @@ function onJumpClick(): void { } ``` -在目标页中,可以通过调用Router模块的[getParams()](../reference/apis/js-apis-router.md#routergetparams)方法来获取传递过来的参数。例如: +在目标页面中,可以通过调用Router模块的[getParams()](../reference/apis/js-apis-router.md#routergetparams)方法来获取传递过来的参数。例如: ```ts @@ -162,7 +162,7 @@ const age = params['info'].age; // 获取age属性的值 ## 页面返回 -当用户在一个页面完成操作后,通常需要返回到上一个页面或者指定页面,这就需要用到页面返回功能。在返回的过程中,可能需要将数据传递给目标页,这就需要用到数据传递功能。 +当用户在一个页面完成操作后,通常需要返回到上一个页面或者指定页面,这就需要用到页面返回功能。在返回的过程中,可能需要将数据传递给目标页面,这就需要用到数据传递功能。 **图2** 页面返回   @@ -195,7 +195,7 @@ import router from '@ohos.router'; }); ``` - 这种方式可以返回到指定页面,需要指定目标页的路径。目标页必须存在于页面栈中才能够返回。 + 这种方式可以返回到指定页面,需要指定目标页面的路径。目标页面必须存在于页面栈中才能够返回。 - 方式三:返回到指定页面,并传递自定义参数信息。 @@ -209,9 +209,9 @@ import router from '@ohos.router'; }); ``` - 这种方式不仅可以返回到指定页面,还可以在返回的同时传递自定义参数信息。这些参数信息可以在目标页中通过调用router.getParams()方法进行获取和解析。 + 这种方式不仅可以返回到指定页面,还可以在返回的同时传递自定义参数信息。这些参数信息可以在目标页面中通过调用router.getParams()方法进行获取和解析。 -在目标页中,在需要获取参数的位置调用router.getParams()方法即可,例如在onPageShow()生命周期回调中: +在目标页面中,在需要获取参数的位置调用router.getParams()方法即可,例如在onPageShow()生命周期回调中: ```ts @@ -276,7 +276,7 @@ message:string类型,表示询问框的内容。 如果调用成功,则会在目标界面开启页面返回询问框;如果调用失败,则会抛出异常,并通过err.code和err.message获取错误码和错误信息。 -当用户点击“返回”按钮时,会弹出确认对话框,询问用户是否确认返回。选择“取消”将停留在当前页目标页;选择“确认”将触发router.back()方法,并根据参数决定如何执行跳转。 +当用户点击“返回”按钮时,会弹出确认对话框,询问用户是否确认返回。选择“取消”将停留在当前页目标页面;选择“确认”将触发router.back()方法,并根据参数决定如何执行跳转。 ### 自定义询问框 @@ -323,4 +323,4 @@ function onBackClick() { } ``` -当用户点击“返回”按钮时,会弹出自定义的询问框,询问用户是否确认返回。选择“取消”将停留在当前页目标页;选择“确认”将触发router.back()方法,并根据参数决定如何执行跳转。 +当用户点击“返回”按钮时,会弹出自定义的询问框,询问用户是否确认返回。选择“取消”将停留在当前页目标页面;选择“确认”将触发router.back()方法,并根据参数决定如何执行跳转。