From a749b52e06fe8ad71fb6b15a9516cf9c44fc47e2 Mon Sep 17 00:00:00 2001 From: zyjhandsome Date: Thu, 11 May 2023 11:04:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E3=80=81=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86=E6=8F=8F?= =?UTF-8?q?=E8=BF=B0=EF=BC=8C=E5=BA=94=E7=94=A8=E6=A8=A1=E5=9E=8B=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E6=A6=82=E5=BF=B5=E4=B8=AD=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E7=9A=84=E5=9B=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zyjhandsome --- .../application-models/Readme-CN.md | 2 +- .../ability-startup-with-explicit-want.md | 2 +- .../ability-startup-with-implicit-want.md | 23 +- .../application-models/abilitystage.md | 2 +- .../application-models/actions-entities.md | 8 +- .../app-deviceconfig-switch.md | 2 +- .../application-component-configuration-fa.md | 2 +- ...plication-component-configuration-stage.md | 23 +- .../application-context-stage.md | 31 ++- .../application-model-description.md | 4 +- .../arkts-ui-widget-content-update.md | 2 +- .../arkts-ui-widget-creation.md | 19 +- .../arkts-ui-widget-event-call.md | 32 +-- ...ts-ui-widget-event-formextensionability.md | 9 +- .../arkts-ui-widget-event-overview.md | 13 +- .../arkts-ui-widget-event-router.md | 5 +- .../arkts-ui-widget-event-uiability.md | 8 +- .../arkts-ui-widget-image-update.md | 2 +- .../arkts-ui-widget-interaction-overview.md | 5 +- .../arkts-ui-widget-lifecycle.md | 5 +- .../arkts-ui-widget-modules.md | 2 +- .../arkts-ui-widget-page-animation.md | 7 +- .../arkts-ui-widget-page-custom-drawing.md | 49 ++-- .../arkts-ui-widget-page-overview.md | 8 +- .../arkts-ui-widget-update-by-status.md | 3 +- .../arkts-ui-widget-update-by-time.md | 2 +- .../arkts-ui-widget-working-principles.md | 11 +- .../common-event-overview.md | 2 +- .../common-event-remove-sticky.md | 13 +- .../common-event-static-subscription.md | 10 +- .../common-event-subscription-overview.md | 6 +- .../common-event-subscription.md | 36 +-- .../application-models/config-file-stage.md | 2 +- .../application-models/data-share-via-want.md | 14 +- .../explicit-implicit-want-mappings.md | 127 +++++----- .../extensionability-overview.md | 6 +- .../figures/WidgetCanvasDemo.jpeg | Bin 63171 -> 60619 bytes .../figures/stage-concepts.png | Bin 43640 -> 8119976 bytes .../hop-cross-device-migration.md | 4 +- .../hop-multi-device-collaboration.md | 20 +- .../inputmethodextentionability.md | 2 +- .../application-models/itc-with-emitter.md | 24 +- .../application-models/itc-with-worker.md | 47 ++-- .../mission-management-launch-type.md | 7 +- .../mission-management-overview.md | 86 +++---- ...mission-set-icon-name-for-task-snapshot.md | 10 +- .../application-models/page-mission-stack.md | 8 +- .../pageability-launch-type.md | 4 +- .../pageability-overview.md | 2 +- .../application-models/redirection-rules.md | 4 +- .../service-widget-overview.md | 8 +- .../serviceextensionability.md | 223 +++++++++--------- .../stage-model-development-overview.md | 4 +- .../application-models/start-page.md | 8 +- .../start-pageability-from-stage.md | 4 +- .../start-serviceability.md | 2 +- ...ibe-system-environment-variable-changes.md | 55 +++-- .../uiability-data-sync-with-ui.md | 140 ++++++----- .../uiability-intra-device-interaction.md | 210 +++++++++-------- .../uiability-launch-type.md | 69 +++--- .../application-models/uiability-lifecycle.md | 166 +++++++------ .../application-models/uiability-overview.md | 15 +- .../application-models/uiability-usage.md | 37 ++- .../application-models/want-overview.md | 46 ++-- .../widget-development-fa.md | 112 ++++----- 65 files changed, 892 insertions(+), 922 deletions(-) diff --git a/zh-cn/application-dev/application-models/Readme-CN.md b/zh-cn/application-dev/application-models/Readme-CN.md index 3436b002f6..ed532cdf86 100644 --- a/zh-cn/application-dev/application-models/Readme-CN.md +++ b/zh-cn/application-dev/application-models/Readme-CN.md @@ -55,7 +55,7 @@ - [Want概述](want-overview.md) - [显式Want与隐式Want匹配规则](explicit-implicit-want-mappings.md) - [常见action与entities](actions-entities.md) - - [使用显式Want启动Ability](ability-startup-with-explicit-want.md) + - [使用显式Want启动应用组件](ability-startup-with-explicit-want.md) - [使用隐式Want打开网址](ability-startup-with-implicit-want.md) - [应用间使用Want分享数据](data-share-via-want.md) - [组件启动规则(Stage模型)](component-startup-rules.md) diff --git a/zh-cn/application-dev/application-models/ability-startup-with-explicit-want.md b/zh-cn/application-dev/application-models/ability-startup-with-explicit-want.md index fd067cba00..774c6007a8 100644 --- a/zh-cn/application-dev/application-models/ability-startup-with-explicit-want.md +++ b/zh-cn/application-dev/application-models/ability-startup-with-explicit-want.md @@ -1,4 +1,4 @@ -# 使用显式Want启动Ability +# 使用显式Want启动应用组件 在应用使用场景中,当用户在应用内点击某个按钮时,经常需要拉起指定UIAbility组件来完成某些特定任务。在启动UIAbility时,指定了abilityName和bundleName参数,可以使用显式Want方式启动UIAbility。显式Want的使用 diff --git a/zh-cn/application-dev/application-models/ability-startup-with-implicit-want.md b/zh-cn/application-dev/application-models/ability-startup-with-implicit-want.md index ac6af46ca5..fb52199714 100644 --- a/zh-cn/application-dev/application-models/ability-startup-with-implicit-want.md +++ b/zh-cn/application-dev/application-models/ability-startup-with-implicit-want.md @@ -5,21 +5,21 @@ ```json { "module": { - // ... + ... "abilities": [ { - // ... + ... "skills": [ { "entities": [ "entity.system.home", "entity.system.browsable" - // ... + ... ], "actions": [ "action.system.home", "ohos.want.action.viewData" - // ... + ... ], "uris": [ { @@ -31,9 +31,9 @@ }, { "scheme": "http", - // ... + ... } - // ... + ... ] } ] @@ -59,19 +59,18 @@ function implicitStartAbility() { 'uri': 'https://www.test.com:8080/query/student' } context.startAbility(wantInfo).then(() => { - // ... + ... }).catch((err) => { - // ... + ... }) } ``` 匹配过程分析: -1. 调用方传入的want参数的action不为空,待匹配Ability的skills配置中的actions不为空且包含调用方传入的want参数的action,action匹配成功。 -2. 调用方传入的want参数的entities不为空,待匹配Ability的skills配置中的entities不为空且包含调用方传入的want参数的entities,entities匹配成功。 -3. 待匹配Ability的skills配置中内uris拼接为`https://www.test.com:8080/query*` (其中*表示通配符),包含调用方传入的want参数的uri,uri匹配成功。 -4. 调用方传入的want参数的type不为空,待匹配Ability的skills配置中的type不为空且包含调用方传入的want参数的type,type匹配成功。 +1. 调用方传入的want参数的action不为空,待匹配目标应用组件的skills配置中的actions不为空且包含调用方传入的want参数的action,action匹配成功。 +2. 调用方传入的want参数的entities不为空,待匹配目标应用组件的skills配置中的entities不为空且包含调用方传入的want参数的entities,entities匹配成功。 +3. 待匹配目标应用组件的skills配置中内uris拼接为`https://www.test.com:8080/query*`(其中*表示通配符),包含调用方传入的want参数的uri,uri匹配成功。 当存在多个匹配的应用时,系统将弹出应用选择框供用户选择。示意效果如下图所示。 ![](figures/ability-startup-with-implicit-want1.png) diff --git a/zh-cn/application-dev/application-models/abilitystage.md b/zh-cn/application-dev/application-models/abilitystage.md index 07cc4a88ce..90e510a3f7 100644 --- a/zh-cn/application-dev/application-models/abilitystage.md +++ b/zh-cn/application-dev/application-models/abilitystage.md @@ -37,7 +37,7 @@ DevEco Studio默认工程中未自动生成AbilityStage,如需要使用Ability "name": "entry", "type": "entry", "srcEntry": "./ets/myabilitystage/MyAbilityStage.ts", - // ... + ... } } ``` diff --git a/zh-cn/application-dev/application-models/actions-entities.md b/zh-cn/application-dev/application-models/actions-entities.md index 91c95361b3..c1bd493569 100644 --- a/zh-cn/application-dev/application-models/actions-entities.md +++ b/zh-cn/application-dev/application-models/actions-entities.md @@ -1,7 +1,6 @@ # 常见action与entities -**action**:表示调用方要执行的通用操作(如查看、分享、应用详情)。在隐式Want中,您可定义该字段,配合uri或parameters来表示对数据要执行的操作。如打开,查看该uri数据。例如,当uri为一段网址,action为ohos.want.action.viewData则表示匹配可查看该网址的Ability。在Want内声明action字段表示希望被调用方应用支持声明的操作。在被调用方应用配置文件skills字段内声明actions表示该应用支持声明操作。 - +**action**:表示调用方要执行的通用操作(如查看、分享、应用详情)。在隐式[Want](../reference/apis/js-apis-app-ability-want.md)中,您可定义该字段,配合uri或parameters来表示对数据要执行的操作。如打开,查看该uri数据。例如,当uri为一段网址,action为`ohos.want.action.viewData`则表示匹配可查看该网址的应用组件。在[Want](../reference/apis/js-apis-app-ability-want.md)内声明action字段表示希望被调用方应用支持声明的操作。在被调用方应用配置文件skills字段内声明actions表示该应用支持声明操作。 **常见action** @@ -14,10 +13,9 @@ - ACTION_VIEW_MULTIPLE_DATA:发送多个数据记录的操作。 -**entities**:表示目标Ability的类别信息(如浏览器、视频播放器),在隐式Want中是对action的补充。在隐式Want中,开发者可定义该字段,来过滤匹配应用的类别,例如必须是浏览器。在Want内声明entities字段表示希望被调用方应用属于声明的类别。在被调用方应用配置文件skills字段内声明entites表示该应用支持的类别。 - +**entities**:表示目标应用组件的类别信息(如浏览器、视频播放器),在隐式Want中是对action的补充。在隐式Want中,开发者可定义该字段,来过滤匹配应用的类别,例如必须是浏览器。在Want内声明entities字段表示希望被调用方应用属于声明的类别。在被调用方应用配置文件skills字段内声明entites表示该应用支持的类别。 -**常用entities** +**常见entities** - ENTITY_DEFAULT:默认类别无实际意义。 diff --git a/zh-cn/application-dev/application-models/app-deviceconfig-switch.md b/zh-cn/application-dev/application-models/app-deviceconfig-switch.md index 5360e745e1..d40602754e 100644 --- a/zh-cn/application-dev/application-models/app-deviceconfig-switch.md +++ b/zh-cn/application-dev/application-models/app-deviceconfig-switch.md @@ -24,7 +24,7 @@ app.json5中对原先config.json中的[deviceConfig](../quick-start/deviceconfig | FA中deviceConfig标签 | 描述 | stage模型中 | 差异比对 | | -------- | -------- | -------- | -------- | | deviceConfig标签 | deviceConfig标签配置了设备信息 | / | Stage模型中没有该标签,直接在app标签下配置设备信息 | -| process | 标识应用或者Ability的进程名。如果在deviceConfig标签下配置了process标签,则该应用的所有Ability都运行在这个进程中。如果在abilities标签下也为某个Ability配置了process标签,则该Ability就运行在这个进程中。 | / | Stage模型不支持配置进程名称 | +| process | 标识应用或者UIAbility的进程名。如果在deviceConfig标签下配置了process标签,则该应用的所有UIAbility都运行在这个进程中。如果在abilities标签下也为某个UIAbility配置了process标签,则该UIAbility就运行在这个进程中。 | / | Stage模型不支持配置进程名称 | | keepAlive | 标识应用是否始终保持运行状态,仅支持系统应用配置,三方应用配置不生效。 | / | Stage模型不支持系统应用模型管控方式变更 | | supportBackup | 标识应用是否支持备份和恢复。 | / | Stage模型不支持 | | compressNativeLibs | 标识libs库是否以压缩存储的方式打包到HAP。 | / | Stage模型不支持 | diff --git a/zh-cn/application-dev/application-models/application-component-configuration-fa.md b/zh-cn/application-dev/application-models/application-component-configuration-fa.md index 6f23e4d124..440bff8f9e 100644 --- a/zh-cn/application-dev/application-models/application-component-configuration-fa.md +++ b/zh-cn/application-dev/application-models/application-component-configuration-fa.md @@ -22,7 +22,7 @@ "actions": ["action.system.home"] } ] - // ... + ... } ``` 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 fd36d620f3..4506a00c7b 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 @@ -1,12 +1,13 @@ # 应用/组件级配置 +在开发应用时,需要配置应用的一些标签,例如应用的包名、图标等标识特征的属性。本文描述了在开发应用需要配置的一些关键标签。 -在开发应用时,需要配置应用的一些标签,例如应用的包名、图标等标识特征的属性。本文描述了在开发应用需要配置的一些关键标签。图标和标签通常一起配置,可以分为应用图标、应用标签和入口图标、入口标签,分别对应[app.json5配置文件](../quick-start/app-configuration-file.md)和[module.json5配置文件](../quick-start/module-configuration-file.md)文件中的icon和label标签。应用图标和标签是在设置应用中使用,例如设置应用中的应用列表。入口图标是应用安装完成后在设备桌面上显示出来的,如图一所示。入口图标是以[UIAbility](uiability-overview.md)为粒度,支持同一个应用存在多个入口图标和标签,点击后进入对应的UIAbility界面。 +图标和标签通常一起配置,可以分为应用图标、应用标签和入口图标、入口标签,分别对应[app.json5配置文件](../quick-start/app-configuration-file.md)和[module.json5配置文件](../quick-start/module-configuration-file.md)文件中的icon和label标签。 +应用图标和标签是在设置应用中使用,例如设置应用中的应用列表。入口图标是应用安装完成后在设备桌面上显示出来的,如图一所示。入口图标是以[UIAbility](uiability-overview.md)为粒度,支持同一个应用存在多个入口图标和标签,点击后进入对应的UIAbility界面。 - **图1** 应用图标和标签   - -![application-component-configuration-stage](figures/application-component-configuration-stage.png) +**图1** 应用图标和标签   +![application-component-configuration-stage](figures/application-component-configuration-stage.png)、 - **应用包名配置** @@ -22,13 +23,13 @@ 应用标签需要在工程的AppScope模块下的[app.json5配置文件](../quick-start/app-configuration-file.md)中配置label标签。标识应用对用户显示的名称,需要配置为字符串资源的索引。 ```json - { - "app": { - "icon": "$media:app_icon", - "label": "$string:app_name" - // ... - } + { + "app": { + "icon": "$media:app_icon", + "label": "$string:app_name" + ... } + } ``` - **入口图标和标签配置** @@ -40,7 +41,7 @@ ```json { "module": { - // ... + ... "abilities": [ { // $开头的为资源值 diff --git a/zh-cn/application-dev/application-models/application-context-stage.md b/zh-cn/application-dev/application-models/application-context-stage.md index 3605144f6b..e2e6d066ac 100644 --- a/zh-cn/application-dev/application-models/application-context-stage.md +++ b/zh-cn/application-dev/application-models/application-context-stage.md @@ -5,14 +5,12 @@ [Context](../reference/apis/js-apis-inner-application-context.md)是应用中对象的上下文,其提供了应用的一些基础信息,例如resourceManager(资源管理)、applicationInfo(当前应用信息)、dir(应用开发路径)、area(文件分区)等,以及应用的一些基本方法,例如createBundleContext()、getApplicationContext()等。UIAbility组件和各种ExtensionAbility派生类组件都有各自不同的Context类。分别有基类Context、ApplicationContext、AbilityStageContext、UIAbilityContext、ExtensionContext、ServiceExtensionContext等Context。 -- 各类Context的继承关系 - +- 各类Context的继承关系 ![context-inheritance](figures/context-inheritance.png) - -- 各类Context的持有关系 - + +- 各类Context的持有关系 ![context-holding](figures/context-holding.png) - + - 各类Context的获取方式 - 获取[UIAbilityContext](../reference/apis/js-apis-inner-application-uiAbilityContext.md)。每个UIAbility中都包含了一个Context属性,提供操作应用组件、获取应用组件的配置信息等能力。 @@ -21,7 +19,7 @@ export default class EntryAbility extends UIAbility { onCreate(want, launchParam) { let uiAbilityContext = this.context; - // ... + ... } } ``` @@ -36,7 +34,7 @@ export default class MyService extends ServiceExtensionAbility { onCreate(want) { let serviceExtensionContext = this.context; - // ... + ... } } ``` @@ -47,7 +45,7 @@ export default class MyAbilityStage extends AbilityStage { onCreate() { let abilityStageContext = this.context; - // ... + ... } } ``` @@ -58,7 +56,7 @@ export default class EntryAbility extends UIAbility { onCreate(want, launchParam) { let applicationContext = this.context.getApplicationContext(); - // ... + ... } } ``` @@ -94,8 +92,7 @@ 获取路径的能力是基类Context中提供的能力,因此在ApplicationContext、AbilityStageContext、UIAbilityContext和ExtensionContext中均可以获取,在各类Context中获取到的路径会有一些差别,具体差别如下图所示。 -**图1** Context中获取的应用开发路径 - +**图1** Context中获取的应用开发路径 ![context-dir](figures/context-dir.png) - 通过ApplicationContext获取的应用级别路径。应用全局信息建议存放的路径,存放在此路径的文件内容仅在应用卸载时会被删除。 @@ -135,7 +132,7 @@ export default class EntryAbility extends UIAbility { let bundleCodeDir = this.context.bundleCodeDir; let distributedFilesDir = this.context.distributedFilesDir; let preferencesDir = this.context.preferencesDir; - // ... + ... } } ``` @@ -201,7 +198,7 @@ export default class EntryAbility extends UIAbility { let bundleName2 = 'com.example.application'; let context2 = this.context.createBundleContext(bundleName2); let label2 = context2.applicationInfo.label; - // ... + ... } } ``` @@ -223,7 +220,7 @@ export default class EntryAbility extends UIAbility { let bundleName2 = 'com.example.application'; let moduleName2 = 'module1'; let context2 = this.context.createModuleContext(bundleName2, moduleName2); - // ... + ... } } ``` @@ -237,7 +234,7 @@ export default class EntryAbility extends UIAbility { onCreate(want, launchParam) { let moduleName2 = 'module1'; let context2 = this.context.createModuleContext(moduleName2); - // ... + ... } } ``` @@ -311,7 +308,7 @@ export default class EntryAbility extends UIAbility { console.log(TAG, `register callback number: ${this.lifecycleId}`); } - // ... + ... onDestroy() { // 获取应用上下文 diff --git a/zh-cn/application-dev/application-models/application-model-description.md b/zh-cn/application-dev/application-models/application-model-description.md index d2309192b5..e95365c831 100644 --- a/zh-cn/application-dev/application-models/application-model-description.md +++ b/zh-cn/application-dev/application-models/application-model-description.md @@ -37,7 +37,7 @@ Stage模型之所以成为主推模型,源于其设计思想。Stage模型的 Stage模型重新定义应用能力的边界,平衡应用能力和系统管控成本。 - - 提供特定场景(如卡片、输入法)的应用组件,以便满足更多的使用场景。 + - 提供特定场景(如服务卡片、输入法)的应用组件,以便满足更多的使用场景。 - 规范化后台进程管理:为保障用户体验,Stage模型对后台应用进程进行了有序治理,应用程序不能随意驻留在后台,同时应用后台行为受到严格管理,防止恶意应用行为。 @@ -51,7 +51,7 @@ Stage模型之所以成为主推模型,源于其设计思想。Stage模型的 | 项目 | FA模型 | Stage模型 | | -------- | -------- | -------- | -| **应用组件** | 1. 组件分类
![fa-model-component](figures/fa-model-component.png)   - PageAbility组件:包含UI界面,提供展示UI的能力。详细介绍请参见[PageAbility组件概述](pageability-overview.md)。
   - ServiceAbility组件:提供后台服务的能力,无UI界面。详细介绍请参见[ServiceAbility组件概述](serviceability-overview.md)。
   - DataAbility组件:提供数据分享的能力,无UI界面。详细介绍请参见[DataAbility组件概述](dataability-overview.md)。
2. 开发方式
   通过导出匿名对象、固定入口文件的方式指定应用组件。开发者无法进行派生,不利于扩展能力。 | 1. 组件分类
![stage-model-component](figures/stage-model-component.png)   - UIAbility组件:包含UI界面,提供展示UI的能力,主要用于和用户交互。详细介绍请参见[UIAbility组件概述](uiability-overview.md)。
   - ExtensionAbility组件:提供特定场景(如卡片、输入法)的扩展能力,满足更多的使用场景。详细介绍请参见[ExtensionAbility组件概述](extensionability-overview.md)。
2. 开发方式
   采用面向对象的方式,将应用组件以类接口的形式开放给开发者,可以进行派生,利于扩展能力。 | +| **应用组件** | 1. 组件分类
![fa-model-component](figures/fa-model-component.png)   - PageAbility组件:包含UI,提供展示UI的能力。详细介绍请参见[PageAbility组件概述](pageability-overview.md)。
   - ServiceAbility组件:提供后台服务的能力,无UI。详细介绍请参见[ServiceAbility组件概述](serviceability-overview.md)。
   - DataAbility组件:提供数据分享的能力,无UI。详细介绍请参见[DataAbility组件概述](dataability-overview.md)。
2. 开发方式
   通过导出匿名对象、固定入口文件的方式指定应用组件。开发者无法进行派生,不利于扩展能力。 | 1. 组件分类
![stage-model-component](figures/stage-model-component.png)   - UIAbility组件:包含UI,提供展示UI的能力,主要用于和用户交互。详细介绍请参见[UIAbility组件概述](uiability-overview.md)。
   - ExtensionAbility组件:提供特定场景(如卡片、输入法)的扩展能力,满足更多的使用场景。详细介绍请参见[ExtensionAbility组件概述](extensionability-overview.md)。
2. 开发方式
   采用面向对象的方式,将应用组件以类接口的形式开放给开发者,可以进行派生,利于扩展能力。 | | **进程模型** | 有两类进程:
1. 主进程
2. 渲染进程
详细介绍请参见[进程模型](process-model-fa.md)。 | 有三类进程:
1. 主进程
2. ExtensionAbility进程
3. 渲染进程
详细介绍请参见[进程模型](process-model-stage.md)。 | | **线程模型** | 1. ArkTS引擎实例的创建
   一个进程可以运行多个应用组件实例,每个应用组件实例运行在一个单独的ArkTS引擎实例中。
2. 线程模型
   每个ArkTS引擎实例都在一个单独线程(非主线程)上创建,主线程没有ArkTS引擎实例。
3. 进程内对象共享:不支持。
详细介绍请参见[线程模型](thread-model-fa.md)。 | 1. ArkTS引擎实例的创建
   一个进程可以运行多个应用组件实例,所有应用组件实例共享一个ArkTS引擎实例。
2. 线程模型
   ArkTS引擎实例在主线程上创建。
3. 进程内对象共享:支持。
详细介绍请参见[线程模型](thread-model-stage.md)。 | | **任务管理模型** | - 每个PageAbility组件实例创建一个任务。
- 任务会持久化存储,直到超过最大任务个数(根据产品配置自定义)或者用户主动删除任务。
- PageAbility组件之间不会形成栈的结构。
详细介绍请参见[任务管理场景介绍](mission-management-overview.md)。 | - 每个UIAbility组件实例创建一个任务。
- 任务会持久化存储,直到超过最大任务个数(根据产品配置自定义)或者用户主动删除任务。
- UIAbility组件之间不会形成栈的结构。
详细介绍请参见[任务管理场景介绍](mission-management-overview.md)。 | diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-content-update.md b/zh-cn/application-dev/application-models/arkts-ui-widget-content-update.md index f8e121cb50..b686e01c6e 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-content-update.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-content-update.md @@ -1,7 +1,7 @@ # 使用方刷新卡片内容(仅对系统应用开放) - 当使用方添加了一些周期性刷新的卡片后,由于周期性刷新的时间间隔限制,可以在使用方中提供按钮主动触发卡片的刷新。这种场景下使用方可以通过调用[requestForm](../reference/apis/js-apis-app-form-formHost.md#requestform)接口请求卡片刷新,系统会调用卡片提供方FormExtensionAbility中的[onUpdateForm](../reference/apis/js-apis-app-form-formExtensionAbility.md#onupdateform)生命周期回调,在回调中,可以使用[updateForm](../reference/apis/js-apis-app-form-formProvider.md#updateform)接口刷新卡片内容。onUpdateForm生命周期回调参考[通过FormExtensionAbility刷新卡片内容](arkts-ui-widget-event-formextensionability.md)。 +当使用方添加了一些周期性刷新的卡片后,由于周期性刷新的时间间隔限制,可以在使用方中提供按钮主动触发卡片的刷新。这种场景下使用方可以通过调用[requestForm](../reference/apis/js-apis-app-form-formHost.md#requestform)接口请求卡片刷新,系统会调用卡片提供方FormExtensionAbility中的[onUpdateForm](../reference/apis/js-apis-app-form-formExtensionAbility.md#onupdateform)生命周期回调,在回调中,可以使用[updateForm](../reference/apis/js-apis-app-form-formProvider.md#updateform)接口刷新卡片内容。onUpdateForm生命周期回调参考[通过FormExtensionAbility刷新卡片内容](arkts-ui-widget-event-formextensionability.md)。 ```ts import formHost from '@ohos.app.form.formHost'; diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-creation.md b/zh-cn/application-dev/application-models/arkts-ui-widget-creation.md index efdf832e6d..34cbeedd2f 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-creation.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-creation.md @@ -2,18 +2,15 @@ 在已有的应用工程中,创建ArkTS卡片,具体的操作方式如下。 -1. 创建卡片。 - +1. 创建卡片。 ![WidgetProjectCreate1](figures/WidgetProjectCreate1.png) - -2. 根据实际业务场景,选择一个卡片模板。 - + +2. 根据实际业务场景,选择一个卡片模板。 ![WidgetProjectCreate2](figures/WidgetProjectCreate2.png) - -3. 在选择卡片的开发语言类型(Language)时,选择ArkTS选项,然后单击“Finish”,即可完成ArkTS卡片创建。 - + +3. 在选择卡片的开发语言类型(Language)时,选择ArkTS选项,然后单击“Finish”,即可完成ArkTS卡片创建。 ![WidgetProjectCreate3](figures/WidgetProjectCreate3.png) + + ArkTS卡片创建完成后,工程中会新增如下卡片相关文件:卡片生命周期管理文件(EntryFormAbility.ts)、卡片页面文件(WidgetCard.ets)和卡片配置文件(form_config.json)。 + ![WidgetProjectView](figures/WidgetProjectView.png) -ArkTS卡片创建完成后,工程中会新增如下卡片相关文件:卡片生命周期管理文件(EntryFormAbility.ts)、卡片页面文件(WidgetCard.ets)和卡片配置文件(form_config.json) - -![WidgetProjectView](figures/WidgetProjectView.png) \ No newline at end of file diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-event-call.md b/zh-cn/application-dev/application-models/arkts-ui-widget-event-call.md index f011aa6547..82ae48f37d 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-event-call.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-event-call.md @@ -52,13 +52,13 @@ ```ts import UIAbility from '@ohos.app.ability.UIAbility'; - + function FunACall(data) { // 获取call事件中传递的所有参数 console.log('FunACall param:' + JSON.stringify(data.readString())); return null; } - + function FunBCall(data) { console.log('FunACall param:' + JSON.stringify(data.readString())); return null; @@ -67,23 +67,23 @@ export default class CameraAbility extends UIAbility { // 如果UIAbility第一次启动,在收到call事件后会触发onCreate生命周期回调 onCreate(want, launchParam) { - try { - // 监听call事件所需的方法 - this.callee.on('funA', FunACall); - this.callee.on('funB', FunBCall); - } catch (error) { - console.log('register failed with error. Cause: ' + JSON.stringify(error)); - } + try { + // 监听call事件所需的方法 + this.callee.on('funA', FunACall); + this.callee.on('funB', FunBCall); + } catch (error) { + console.log('register failed with error. Cause: ' + JSON.stringify(error)); + } } - + // 进程退出时,解除监听 onDestroy() { - try { - this.callee.off('funA'); - this.callee.off('funB'); - } catch (error) { - console.log('register failed with error. Cause: ' + JSON.stringify(error)); - } + try { + this.callee.off('funA'); + this.callee.off('funB'); + } catch (error) { + console.log('register failed with error. Cause: ' + JSON.stringify(error)); + } } }; ``` diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-event-formextensionability.md b/zh-cn/application-dev/application-models/arkts-ui-widget-event-formextensionability.md index ab376c0ea9..cc4533c53b 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-event-formextensionability.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-event-formextensionability.md @@ -4,7 +4,7 @@ 在卡片页面中可以通过**postCardAction**接口触发message事件至FormExtensionAbility,然后由FormExtensionAbility刷新卡片内容,下面是这种刷新方式的简单示例。 -- 在卡片页面通过注册Button的onClick点击事件回调,并在回调中调用**postCardAction**接口触发事件至FormExtensionAbility +- 在卡片页面通过注册Button的onClick点击事件回调,并在回调中调用**postCardAction**接口触发事件至FormExtensionAbility。 ```ts let storage = new LocalStorage(); @@ -34,7 +34,7 @@ } ``` -- 在FormExtensionAbility的onFormEvent生命周期中调用[updateForm](../reference/apis/js-apis-app-form-formProvider.md#updateform)接口刷新卡片 +- 在FormExtensionAbility的onFormEvent生命周期中调用[updateForm](../reference/apis/js-apis-app-form-formProvider.md#updateform)接口刷新卡片。 ```ts import formBindingData from '@ohos.app.form.formBindingData'; @@ -57,10 +57,9 @@ }) } - // ... + ... } ``` - 运行效果如下图所示。 - + 运行效果如下图所示。 ![WidgetUpdatePage](figures/WidgetUpdatePage.png) diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-event-overview.md b/zh-cn/application-dev/application-models/arkts-ui-widget-event-overview.md index 98867645bc..06068236ac 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-event-overview.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-event-overview.md @@ -1,9 +1,6 @@ # 卡片事件能力说明 - -ArkTS卡片中提供了postCardAction()接口用于卡片内部和提供方应用间的交互,当前支持router、message和call三种类型的事件,仅在卡片中可以调用。 - - +ArkTS卡片中提供了postCardAction()接口用于卡片内部和提供方应用间的交互,当前支持router、message和call三种类型的事件,仅在卡片中可以调用。 ![WidgetPostCardAction](figures/WidgetPostCardAction.png) @@ -31,9 +28,7 @@ action参数说明: | "params" | Object | 当前action携带的额外参数,内容使用JSON格式的键值对形式。"call" 类型时需填入参数'method',且类型需要为string类型,用于触发UIAbility中对应的方法,必填。 | -postCardAction()接口示例代码: - - +`postCardAction()`接口示例代码: ```typescript Button('跳转') @@ -49,8 +44,7 @@ Button('跳转') } }); }) -``` -```typescript + Button('拉至后台') .width('40%') .height('20%') @@ -67,7 +61,6 @@ Button('拉至后台') }) ``` - 以下是卡片开发过程中可以通过卡片事件实现的典型开发场景: diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-event-router.md b/zh-cn/application-dev/application-models/arkts-ui-widget-event-router.md index 82588a6687..bbb3fd3e88 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-event-router.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-event-router.md @@ -1,9 +1,6 @@ # 使用router事件跳转到指定页面 - -在卡片中使用**postCardAction**接口的router能力,能够快速拉起卡片提供方应用,因此页面较多的应用往往会通过卡片提供不同的跳转按钮,实现一键直达的效果。例如相机卡片,卡片上提供拍照、录像等按钮,点击不同按钮将拉起相机应用的不同页面,从而提高用户的体验。 - - +在卡片中使用**postCardAction**接口的router能力,能够快速拉起卡片提供方应用,因此页面较多的应用往往会通过卡片提供不同的跳转按钮,实现一键直达的效果。例如相机卡片,卡片上提供拍照、录像等按钮,点击不同按钮将拉起相机应用的不同页面,从而提高用户的体验。 ![WidgerCameraCard](figures/WidgerCameraCard.png) diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-event-uiability.md b/zh-cn/application-dev/application-models/arkts-ui-widget-event-uiability.md index fb42de0b4b..57e6e94617 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-event-uiability.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-event-uiability.md @@ -89,7 +89,7 @@ ## 通过postCardAction接口触发call事件 - 在使用**postCardAction**接口的call事件时,需要在FormExtensionAbility中的onAddForm生命周期回调中更新formId。 - + ```ts import formBindingData from '@ohos.app.form.formBindingData'; import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility'; @@ -117,7 +117,7 @@ struct WidgetCard { @LocalStorageProp('detail') detail: string = 'init'; @LocalStorageProp('formId') formId: string = '0'; - + build() { Column() { Button('拉至后台') @@ -150,8 +150,8 @@ import formProvider from '@ohos.app.form.formProvider'; import formInfo from '@ohos.app.form.formInfo'; - const MSG_SEND_METHOD: string = 'funA' - + const MSG_SEND_METHOD: string = 'funA'; + // 在收到call事件后会触发callee监听的方法 function FunACall(data) { // 获取call事件中传递的所有参数 diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-image-update.md b/zh-cn/application-dev/application-models/arkts-ui-widget-image-update.md index 6757a46ff4..dacec67a00 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-image-update.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-image-update.md @@ -160,7 +160,7 @@ } ``` -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> **说明:** > - Image组件通过入参(**memory://fileName**)中的**memory://**标识来进行远端内存图片显示,其中**fileName**需要和EntryFormAbility传递对象(**'formImages': {key: fd})**中的**key**相对应。 > > - Image组件通过传入的参数是否有变化来决定是否刷新图片,因此EntryFormAbility每次传递过来的**imgName**都需要不同,连续传递两个相同的**imgName**时,图片不会刷新。 diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-interaction-overview.md b/zh-cn/application-dev/application-models/arkts-ui-widget-interaction-overview.md index dc785d9c54..c5f94282c2 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-interaction-overview.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-interaction-overview.md @@ -1,9 +1,6 @@ # 卡片数据交互说明 - -ArkTS卡片框架提供了updateForm()接口和requestForm()接口主动触发卡片的页面刷新。 - - +ArkTS卡片框架提供了updateForm()接口和requestForm()接口主动触发卡片的页面刷新。 ![WidgetLocalStorageProp](figures/WidgetLocalStorageProp.png) diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-lifecycle.md b/zh-cn/application-dev/application-models/arkts-ui-widget-lifecycle.md index 4e99fe20f8..9b34f5c1d5 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-lifecycle.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-lifecycle.md @@ -91,5 +91,6 @@ ``` -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> FormExtensionAbility进程不能常驻后台,即在卡片生命周期回调函数中无法处理长时间的任务,在生命周期调度完成后会继续存在5秒,如5秒内没有新的生命周期回调触发则进程自动退出。针对可能需要5秒以上才能完成的业务逻辑,建议[拉起主应用](arkts-ui-widget-event-uiability.md)进行处理,处理完成后使用[updateForm](../reference/apis/js-apis-app-form-formProvider.md#updateform)通知卡片进行刷新。 +> **说明:** +> +> FormExtensionAbility进程不能常驻后台,即在卡片生命周期回调函数中无法处理长时间的任务,在生命周期调度完成后会继续存在5秒,如5秒内没有新的生命周期回调触发则进程自动退出。针对可能需要5秒以上才能完成的业务逻辑,建议[拉起主应用](arkts-ui-widget-event-uiability.md)进行处理,处理完成后使用[`updateForm()`](../reference/apis/js-apis-app-form-formProvider.md#updateform)通知卡片进行刷新。 diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-modules.md b/zh-cn/application-dev/application-models/arkts-ui-widget-modules.md index 8ffc5ebee5..fffa5ca955 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-modules.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-modules.md @@ -1,7 +1,7 @@ # ArkTS卡片相关模块 - **图1** ArkTS卡片相关模块   +**图1** ArkTS卡片相关模块 ![WidgetModules](figures/WidgetModules.png) diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-page-animation.md b/zh-cn/application-dev/application-models/arkts-ui-widget-page-animation.md index 2fc813e56c..1cecd3aae6 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-page-animation.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-page-animation.md @@ -4,7 +4,7 @@ ArkTS卡片开放了使用动画效果的能力,支持[显式动画](../reference/arkui-ts/ts-explicit-animation.md)、[属性动画](../reference/arkui-ts/ts-animatorproperty.md)、[组件内转场](../reference/arkui-ts/ts-transition-animation-component.md)能力。需要注意的是,ArkTS卡片使用动画效果时具有以下限制: - **表1** 动效参数限制 +**表1** 动效参数限制 | 名称 | 参数说明 | 限制描述 | | -------- | -------- | -------- | @@ -13,10 +13,7 @@ ArkTS卡片开放了使用动画效果的能力,支持[显式动画](../refere | delay | 动画延迟执行的时长 | 卡片中禁止设置此参数,使用默认值0。 | | iterations | 动画播放次数 | 卡片中禁止设置此参数,使用默认值1。 | - -以下示例代码实现了按钮旋转的动画效果: - - +以下示例代码实现了按钮旋转的动画效果: ![WidgetAnimation](figures/WidgetAnimation.gif) diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-page-custom-drawing.md b/zh-cn/application-dev/application-models/arkts-ui-widget-page-custom-drawing.md index 69e052fc3d..cd42ed8016 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-page-custom-drawing.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-page-custom-drawing.md @@ -1,7 +1,7 @@ # 卡片使用自定义绘制能力 - ArkTS卡片开放了自定义绘制的能力,在卡片上可以通过[Canvas](../reference/arkui-ts/ts-components-canvas-canvas.md)组件创建一块画布,然后通过[CanvasRenderingContext2D](../reference/arkui-ts/ts-canvasrenderingcontext2d.md)对象在画布上进行自定义图形的绘制,如下示例代码实现了在画布的中心绘制了一个笑脸。 +ArkTS卡片开放了自定义绘制的能力,在卡片上可以通过[Canvas](../reference/arkui-ts/ts-components-canvas-canvas.md)组件创建一块画布,然后通过[CanvasRenderingContext2D](../reference/arkui-ts/ts-canvasrenderingcontext2d.md)对象在画布上进行自定义图形的绘制,如下示例代码实现了在画布的中心绘制了一个笑脸。 ```typescript @Entry @@ -30,41 +30,41 @@ struct Card { this.context.fillRect(0, 0, this.canvasWidth, this.canvasHeight); // 在画布的中心绘制一个红色的圆 this.context.beginPath(); - let radius = this.context.width / 3 - let circleX = this.context.width / 2 - let circleY = this.context.height / 2 + let radius = this.context.width / 3; + let circleX = this.context.width / 2; + let circleY = this.context.height / 2; this.context.moveTo(circleX - radius, circleY); this.context.arc(circleX, circleY, radius, 2 * Math.PI, 0, true); this.context.closePath(); this.context.fillStyle = 'red'; this.context.fill(); // 绘制笑脸的左眼 - let leftR = radius / 4 - let leftX = circleX - (radius / 2) - let leftY = circleY - (radius / 3.5) + let leftR = radius / 4;; + let leftX = circleX - (radius / 2); + let leftY = circleY - (radius / 3.5); this.context.beginPath(); this.context.arc(leftX, leftY, leftR, 0, Math.PI, true); - this.context.strokeStyle = '#ffff00' - this.context.lineWidth = 10 - this.context.stroke() + this.context.strokeStyle = '#ffff00'; + this.context.lineWidth = 10; + this.context.stroke();; // 绘制笑脸的右眼 - let rightR = radius / 4 - let rightX = circleX + (radius / 2) - let rightY = circleY - (radius / 3.5) + let rightR = radius / 4; + let rightX = circleX + (radius / 2); + let rightY = circleY - (radius / 3.5); this.context.beginPath(); this.context.arc(rightX, rightY, rightR, 0, Math.PI, true); - this.context.strokeStyle = '#ffff00' - this.context.lineWidth = 10 - this.context.stroke() + this.context.strokeStyle = '#ffff00'; + this.context.lineWidth = 10; + this.context.stroke(); // 绘制笑脸的嘴巴 - let mouthR = radius / 2.5 - let mouthX = circleX - let mouthY = circleY + (radius / 3) + let mouthR = radius / 2.5; + let mouthX = circleX; + let mouthY = circleY + (radius / 3); this.context.beginPath(); this.context.arc(mouthX, mouthY, mouthR, Math.PI, 0, true); - this.context.strokeStyle = '#ffff00' - this.context.lineWidth = 10 - this.context.stroke() + this.context.strokeStyle = '#ffff00'; + this.context.lineWidth = 10; + this.context.stroke(); }) } }.height('100%').width('100%') @@ -72,8 +72,5 @@ struct Card { } ``` - -运行效果如下图所示。 - - +运行效果如下图所示。 ![WidgetCanvasDemo](figures/WidgetCanvasDemo.jpeg) diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-page-overview.md b/zh-cn/application-dev/application-models/arkts-ui-widget-page-overview.md index 24bbc03fdc..2b31c5e415 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-page-overview.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-page-overview.md @@ -1,9 +1,6 @@ # 卡片页面能力说明 - -开发者可以使用声明式范式开发ArkTS卡片页面。如下卡片页面由DevEco Studio模板自动生成,开发者可以根据自身的业务场景进行调整。 - - +开发者可以使用声明式范式开发ArkTS卡片页面。如下卡片页面由DevEco Studio模板自动生成,开发者可以根据自身的业务场景进行调整。 ![WidgetPreviewPage](figures/WidgetPreviewPage.png) @@ -16,7 +13,6 @@ ArkTS卡片支持的页面能力详见[学习ArkTS语言](../quick-start/arkts-c 只有标识“支持在ArkTS卡片中使用”的接口可用于ArkTS卡片,同时请留意卡片场景下的能力差异说明。 -例如:以下说明表示@Component装饰器可在ArkTS卡片中使用。 - +例如:以下说明表示@Component装饰器可在ArkTS卡片中使用。 ![WidgetSupportApi](figures/WidgetSupportApi.png) diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-update-by-status.md b/zh-cn/application-dev/application-models/arkts-ui-widget-update-by-status.md index 62d3924d08..02ab8180c2 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-update-by-status.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-update-by-status.md @@ -166,6 +166,7 @@ ``` -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> **说明:** +> > 通过本地数据库进行卡片信息的持久化时,建议先在[**onAddForm**](../reference/apis/js-apis-app-form-formExtensionAbility.md#onaddform)生命周期中通过[**TEMPORARY_KEY**](../reference/apis/js-apis-app-form-formInfo.md#formparam)判断当前添加的卡片是否为常态卡片:如果是常态卡片,则直接进行卡片信息持久化;如果为临时卡片,则可以在卡片转为常态卡片(**[onCastToNormalForm](../reference/apis/js-apis-app-form-formExtensionAbility.md#oncasttonormalform)**)时进行持久化;同时需要在卡片销毁(**[onRemoveForm](../reference/apis/js-apis-app-form-formExtensionAbility.md#onremoveform)**)时删除当前卡片存储的持久化信息,避免反复添加删除卡片导致数据库文件持续变大。 diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-update-by-time.md b/zh-cn/application-dev/application-models/arkts-ui-widget-update-by-time.md index 71e33e42c3..862e5f5232 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-update-by-time.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-update-by-time.md @@ -91,7 +91,7 @@ 在触发定时、定点或下次刷新后,系统会调用FormExtensionAbility的[`onUpdateForm()`](../reference/apis/js-apis-app-form-formExtensionAbility.md#onupdateform)生命周期回调,在回调中,可以使用[`updateForm()`](../reference/apis/js-apis-app-form-formProvider.md#updateform)进行提供方刷新卡片。`onUpdateForm()`生命周期回调的使用请参见[通过FormExtensionAbility刷新卡片内容](arkts-ui-widget-event-formextensionability.md)。 -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> **说明:** > 1. 定时刷新有配额限制,每张卡片每天最多通过定时方式触发刷新50次,定时刷新包含[卡片配置项updateDuration](arkts-ui-widget-configuration.md)和调用[`setFormNextRefreshTime()`](../reference/apis/js-apis-app-form-formProvider.md#setformnextrefreshtime)方法两种方式,当达到50次配额后,无法通过定时方式再次触发刷新,刷新次数会在每天的0点重置。 > > 2. 当前定时刷新使用同一个计时器进行计时,因此卡片定时刷新的第一次刷新会有最多30分钟的偏差。比如第一张卡片A(每隔半小时刷新一次)在3点20分添加成功,定时器启动并每隔半小时触发一次事件,第二张卡片B(每隔半小时刷新一次)在3点40分添加成功,在3点50分定时器事件触发时,卡片A触发定时刷新,卡片B会在下次事件(4点20分)中才会触发。 diff --git a/zh-cn/application-dev/application-models/arkts-ui-widget-working-principles.md b/zh-cn/application-dev/application-models/arkts-ui-widget-working-principles.md index 5b088025fb..a9fe611ff2 100644 --- a/zh-cn/application-dev/application-models/arkts-ui-widget-working-principles.md +++ b/zh-cn/application-dev/application-models/arkts-ui-widget-working-principles.md @@ -3,7 +3,7 @@ ## 实现原理 - **图1** ArkTS卡片实现原理   +**图1** ArkTS卡片实现原理 ![WidgetPrinciple](figures/WidgetPrinciple.png) - 卡片使用方:显示卡片内容的宿主应用,控制卡片在宿主中展示的位置,当前仅系统应用可以作为卡片使用方。 @@ -14,7 +14,7 @@ - 卡片渲染服务:用于管理卡片渲染实例,渲染实例与卡片使用方上的[卡片组件](../reference/arkui-ts/ts-basic-components-formcomponent.md)一一绑定。卡片渲染服务运行卡片页面代码widgets.abc进行渲染,并将渲染后的数据发送至卡片使用方对应的[卡片组件](../reference/arkui-ts/ts-basic-components-formcomponent.md)。 - **图2** ArkTS卡片渲染服务运行原理   + **图2** ArkTS卡片渲染服务运行原理 ![WidgetRender](figures/WidgetRender.png) 与JS卡片相比,ArkTS卡片支持在卡片中运行逻辑代码,为确保ArkTS卡片发生问题后不影响卡片使用方应用的使用,ArkTS卡片新增了卡片渲染服务用于运行卡片页面代码widgets.abc,卡片渲染服务由卡片管理服务管理。卡片使用方的每个卡片组件都对应了卡片渲染服务里的一个渲染实例,同一应用提供方的渲染实例运行在同一个虚拟机运行环境中,不同应用提供方的渲染实例运行在不同的虚拟机运行环境中,通过虚拟机运行环境隔离不同应用提供方卡片之间的资源与状态。开发过程中需要注意的是[globalThis](uiability-data-sync-with-ui.md#使用globalthis进行数据同步)对象的使用,相同应用提供方的卡片globalThis对象是同一个,不同应用提供方的卡片globalThis对象是不同的。 @@ -25,11 +25,12 @@ 卡片作为应用的一个快捷入口,ArkTS卡片相较于JS卡片具备如下几点优势: - 统一开发范式,提升开发体验和开发效率。 + OpenHarmony在2022年发布了声明式范式的UI开发框架,而卡片还延续了css/hml/json三段式类Web范式的开发方式,提高了开发者的学习成本,提供ArkTS卡片能力后,统一了卡片和页面的开发范式,页面的布局可以直接复用到卡片布局中,提升开发体验和开发效率。 - - **图3** 卡片工程结构对比   + + **图3** 卡片工程结构对比 ![WidgetProject](figures/WidgetProject.png) - + - 增强了卡片的能力,使卡片更加万能。 - 新增了动效的能力:ArkTS卡片开放了[属性动画](../reference/arkui-ts/ts-animatorproperty.md)和[显式动画](../reference/arkui-ts/ts-explicit-animation.md)的能力,使卡片的交互更加友好。 - 新增了自定义绘制的能力:ArkTS卡片开放了[Canvas](../reference/arkui-ts/ts-components-canvas-canvas.md)画布组件,卡片可以使用自定义绘制的能力构建更多样的显示和交互效果。 diff --git a/zh-cn/application-dev/application-models/common-event-overview.md b/zh-cn/application-dev/application-models/common-event-overview.md index b68fdc86e1..5a350a436d 100644 --- a/zh-cn/application-dev/application-models/common-event-overview.md +++ b/zh-cn/application-dev/application-models/common-event-overview.md @@ -24,5 +24,5 @@ OpenHarmony通过CES(Common Event Service,公共事件服务)为应用程 每个应用都可以按需订阅公共事件,订阅成功,当公共事件发布时,系统会将其发送给对应的应用。这些公共事件可能来自系统、其他应用和应用自身。 - **图1** 公共事件示意图 +**图1** 公共事件示意图 ![common-event](figures/common-event.png) diff --git a/zh-cn/application-dev/application-models/common-event-remove-sticky.md b/zh-cn/application-dev/application-models/common-event-remove-sticky.md index ff1a0263f5..5311f6e9aa 100644 --- a/zh-cn/application-dev/application-models/common-event-remove-sticky.md +++ b/zh-cn/application-dev/application-models/common-event-remove-sticky.md @@ -25,13 +25,12 @@ 2. 移除的粘性公共事件,必须是本应用之前已发布的粘性公共事件,发布粘性公共事件参考[公共事件发布](common-event-publish.md)章节。 ```ts - CommonEventManager.removeStickyCommonEvent("sticky_event", (err) => { // sticky_event粘性公共事件名 - if (err) { - console.info(`Remove sticky event AsyncCallback failed, errCode: ${err.code}, errMes: ${err.message}`); - return; - } - console.info(`Remove sticky event AsyncCallback success`); - } + commonEventManager.removeStickyCommonEvent("sticky_event", (err) => { // sticky_event粘性公共事件名 + if (err) { + console.error(`Failed to remove sticky common event. Code is ${err.code}, message is ${err.message}`); + return; + } + console.info(`Succeeded in removeing sticky event.`); }); ``` diff --git a/zh-cn/application-dev/application-models/common-event-static-subscription.md b/zh-cn/application-dev/application-models/common-event-static-subscription.md index 642f29866d..ab294e58d5 100644 --- a/zh-cn/application-dev/application-models/common-event-static-subscription.md +++ b/zh-cn/application-dev/application-models/common-event-static-subscription.md @@ -14,9 +14,9 @@ import StaticSubscriberExtensionAbility from '@ohos.application.StaticSubscriberExtensionAbility' export default class StaticSubscriber extends StaticSubscriberExtensionAbility { - onReceiveEvent(event) { - console.log('onReceiveEvent, event:' + event.event); - } + onReceiveEvent(event) { + console.log('onReceiveEvent, event:' + event.event); + } } ``` @@ -29,7 +29,7 @@ ```ts { "module": { - ...... + ... "extensionAbilities": [ { "name": "StaticSubscriber", @@ -47,7 +47,7 @@ ] } ] - ...... + ... } } ``` diff --git a/zh-cn/application-dev/application-models/common-event-subscription-overview.md b/zh-cn/application-dev/application-models/common-event-subscription-overview.md index 83a4518283..0e7cff976a 100644 --- a/zh-cn/application-dev/application-models/common-event-subscription-overview.md +++ b/zh-cn/application-dev/application-models/common-event-subscription-overview.md @@ -1,7 +1,7 @@ # 公共事件订阅概述 -​公共事件服务提供了动态订阅和静态订阅两种订阅方式。动态订阅与静态订阅最大的区别在于,动态订阅是应用运行时行为,而静态订阅是后台服务无需处于运行状态。 +公共事件服务提供了动态订阅和静态订阅两种订阅方式。动态订阅与静态订阅最大的区别在于,动态订阅是应用运行时行为,而静态订阅是后台服务无需处于运行状态。 -- 动态订阅:指订阅方在运行时调用公共事件订阅的API实现对公共事件的订阅,详见[动态订阅公共事件](common-event-subscription.md)。 +- 动态订阅:指订阅方在运行时调用公共事件订阅的API实现对公共事件的订阅,详细请参见[动态订阅公共事件](common-event-subscription.md)。 -- 静态订阅:订阅方通过配置文件声明和实现继承自StaticSubscriberExtensionAbility的类实现对公共事件的订阅,详见[静态订阅公共事件](common-event-static-subscription.md)。 \ No newline at end of file +- 静态订阅:订阅方通过配置文件声明和实现继承自StaticSubscriberExtensionAbility的类实现对公共事件的订阅,详细请参见[静态订阅公共事件](common-event-static-subscription.md)。 \ No newline at end of file diff --git a/zh-cn/application-dev/application-models/common-event-subscription.md b/zh-cn/application-dev/application-models/common-event-subscription.md index 151c31927e..98c3daea06 100644 --- a/zh-cn/application-dev/application-models/common-event-subscription.md +++ b/zh-cn/application-dev/application-models/common-event-subscription.md @@ -12,8 +12,8 @@ | 接口名 | 接口描述 | | -------- | -------- | -| createSubscriber(subscribeInfo: [CommonEventSubscribeInfo](../reference/apis/js-apis-commonEventManager.md#commoneventsubscribeinfo), callback: AsyncCallback<[CommonEventData](../reference/apis/js-apis-commonEventManager.md#commoneventdata)>): void | 创建订阅者对象(callback) | -| createSubscriber(subscribeInfo: CommonEventSubscribeInfo): Promise<CommonEventSubscriber> | 创建订阅者对象(promise) | +| createSubscriber(subscribeInfo: [CommonEventSubscribeInfo](../reference/apis/js-apis-commonEventManager.md#commoneventsubscribeinfo), callback: AsyncCallback<[CommonEventData](../reference/apis/js-apis-commonEventManager.md#commoneventdata)>): void | 创建订阅者对象(callback) | +| createSubscriber(subscribeInfo: CommonEventSubscribeInfo): Promise<CommonEventSubscriber> | 创建订阅者对象(promise) | | subscribe(subscriber: CommonEventSubscriber, callback: AsyncCallback): void | 订阅公共事件 | @@ -32,7 +32,7 @@ let subscriber = null; // 订阅者信息 let subscribeInfo = { - events: ["usual.event.SCREEN_OFF"], // 订阅灭屏公共事件 + events: ["usual.event.SCREEN_OFF"], // 订阅灭屏公共事件 } ``` @@ -41,13 +41,13 @@ ```ts // 创建订阅者回调 commonEventManager.createSubscriber(subscribeInfo, (err, data) => { - if (err) { - console.error(`[CommonEvent] CreateSubscriberCallBack err=${JSON.stringify(err)}`); - } else { - console.info(`[CommonEvent] CreateSubscriber success`); - subscriber = data; - // 订阅公共事件回调 - } + if (err) { + console.error(`[CommonEvent] CreateSubscriberCallBack err=${JSON.stringify(err)}`); + } else { + console.info(`[CommonEvent] CreateSubscriber success`); + subscriber = data; + // 订阅公共事件回调 + } }) ``` @@ -56,14 +56,14 @@ ```ts // 订阅公共事件回调 if (subscriber !== null) { - commonEventManager.subscribe(subscriber, (err, data) => { - if (err) { - console.error(`[CommonEvent] SubscribeCallBack err=${JSON.stringify(err)}`); - } else { - console.info(`[CommonEvent] SubscribeCallBack data=${JSON.stringify(data)}`); - } - }) + commonEventManager.subscribe(subscriber, (err, data) => { + if (err) { + console.error(`[CommonEvent] SubscribeCallBack err=${JSON.stringify(err)}`); + } else { + console.info(`[CommonEvent] SubscribeCallBack data=${JSON.stringify(data)}`); + } + }) } else { - console.error(`[CommonEvent] Need create subscriber`); + console.error(`[CommonEvent] Need create subscriber`); } ``` diff --git a/zh-cn/application-dev/application-models/config-file-stage.md b/zh-cn/application-dev/application-models/config-file-stage.md index e91f2e69bb..10a1b5a482 100644 --- a/zh-cn/application-dev/application-models/config-file-stage.md +++ b/zh-cn/application-dev/application-models/config-file-stage.md @@ -2,4 +2,4 @@ 应用配置文件中包含应用配置信息、应用组件信息、权限信息、开发者自定义信息等,这些信息在编译构建、分发和运行解决分别提供给编译工具、应用市场和操作系统使用。 -在基于Stage模型开发的应用项目代码下,都存在app.json5(一个)及module.json5(一个或多个)两种配置文件,常用配置项请参见[应用/组件级配置](application-component-configuration-stage.md)。对于这两种配置文件的更多介绍,请参见[应用配置文件概述(Stage模型)](../quick-start/application-configuration-file-overview-stage.md)。 \ No newline at end of file +在基于Stage模型开发的应用项目代码下,都存在app.json5(一个)及module.json5(一个或多个)两种配置文件,常用配置项请参见[应用/组件级配置](application-component-configuration-stage.md)。对于这两种配置文件的更多介绍,请参见[应用配置文件概述(Stage模型)](../quick-start/application-configuration-file-overview-stage.md)。 \ No newline at end of file diff --git a/zh-cn/application-dev/application-models/data-share-via-want.md b/zh-cn/application-dev/application-models/data-share-via-want.md index e23e11d240..edb540ff52 100644 --- a/zh-cn/application-dev/application-models/data-share-via-want.md +++ b/zh-cn/application-dev/application-models/data-share-via-want.md @@ -48,9 +48,9 @@ function implicitStartAbility() { } } context.startAbility(wantInfo).then(() => { - // ... + ... }).catch((err) => { - // ... + ... }) } ``` @@ -76,17 +76,17 @@ function implicitStartAbility() { ```json { "module": { - // ... + ... "abilities": [ { - // ... + ... "skills": [ { - // ... + ... "actions": [ "action.system.home", "ohos.want.action.sendData" - // ... + ... ], "uris": [ { @@ -101,7 +101,7 @@ function implicitStartAbility() { } ``` -当用户选择分享的应用后,嵌套在`ability.want.params.INTENT`字段中的Want参数将会传递给所选应用。被分享方的UIAbility被启动后,可以在其[onCreate()](../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityoncreate)或者[onNewWant()](../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityonnewwant)回调中获取传入的Want参数信息。 +当用户选择分享的应用后,嵌套在`ability.want.params.INTENT`字段中的Want参数将会传递给所选应用。被分享方的UIAbility被启动后,可以在其[`onCreate()`](../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityoncreate)或者[`onNewWant()`](../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityonnewwant)回调中获取传入的Want参数信息。 获取到的Want参数信息示例如下,可以使用被分享文件的文件描述符(FD)进行相应操作。 diff --git a/zh-cn/application-dev/application-models/explicit-implicit-want-mappings.md b/zh-cn/application-dev/application-models/explicit-implicit-want-mappings.md index f7a39ebf2e..080d707d52 100644 --- a/zh-cn/application-dev/application-models/explicit-implicit-want-mappings.md +++ b/zh-cn/application-dev/application-models/explicit-implicit-want-mappings.md @@ -1,28 +1,28 @@ # 显式Want与隐式Want匹配规则 -在启动目标Ability时,会通过显式Want或者隐式Want进行目标Ability的匹配,这里说的匹配规则就是调用方Want中设置的参数如何与目标Ability声明的配置文件进行匹配。 +在启动目标应用组件时,会通过显式[Want](../reference/apis/js-apis-app-ability-want.md)或者隐式[Want](../reference/apis/js-apis-app-ability-want.md)进行目标应用组件的匹配,这里说的匹配规则就是调用方传入的[want](../reference/apis/js-apis-app-ability-want.md)参数中设置的参数如何与目标应用组件声明的配置文件进行匹配。 ## 显式Want匹配原理 -显式Want匹配原理如下表所示。 +显式[Want](../reference/apis/js-apis-app-ability-want.md)匹配原理如下表所示。 | 名称 | 类型 | 匹配项 | 必选 | 规则 | | -------- | -------- | -------- | -------- | -------- | -| deviceId | string | 是 | 否 | 留空将仅匹配本设备内Ability。 | +| deviceId | string | 是 | 否 | 留空将仅匹配本设备内的应用组件。 | | bundleName | string | 是 | 是 | 如果指定abilityName,而不指定bundleName,则匹配失败。 | -| moduleName | string | 是 | 否 | 留空时当同一个应用内存在多个模块且模块间存在重名Ability,将默认匹配第一个。 | +| moduleName | string | 是 | 否 | 留空时当同一个应用内存在多个模块且模块间存在重名应用组件,将默认匹配第一个。 | | abilityName | string | 是 | 是 | 该字段必须设置表示显式匹配。 | -| uri | string | 否 | 否 | 系统匹配时将忽略该参数,但仍可作为参数传递给目标Ability。 | -| type | string | 否 | 否 | 系统匹配时将忽略该参数,但仍可作为参数传递给目标Ability。 | -| action | string | 否 | 否 | 系统匹配时将忽略该参数,但仍可作为参数传递给目标Ability。 | -| entities | Array<string> | 否 | 否 | 系统匹配时将忽略该参数,但仍可作为参数传递给目标Ability。 | +| uri | string | 否 | 否 | 系统匹配时将忽略该参数,但仍可作为参数传递给目标应用组件。 | +| type | string | 否 | 否 | 系统匹配时将忽略该参数,但仍可作为参数传递给目标应用组件。 | +| action | string | 否 | 否 | 系统匹配时将忽略该参数,但仍可作为参数传递给目标应用组件。 | +| entities | Array<string> | 否 | 否 | 系统匹配时将忽略该参数,但仍可作为参数传递给目标应用组件。 | | flags | number | 否 | 否 | 不参与匹配,直接传递给系统处理,一般用来设置运行态信息,例如URI数据授权等。 | -| parameters | {[key: string]: any} | 否 | 否 | 不参与匹配,应用自定义数据将直接传递给目标Ability。 | +| parameters | {[key: string]: any} | 否 | 否 | 不参与匹配,应用自定义数据将直接传递给目标应用组件。 | ## 隐式Want匹配原理 -隐式Want匹配原理如下表所示。 +隐式[Want](../reference/apis/js-apis-app-ability-want.md)匹配原理如下表所示。 | 名称 | 类型 | 匹配项 | 必选 | 规则 | | ----------- | ------------------------------ | ------ | ---- | ------------------------------------------------------------ | @@ -35,133 +35,128 @@ | action | string | 是 | 否 | | | entities | Array<string> | 是 | 否 | | | flags | number | 否 | 否 | 不参与匹配,直接传递给系统处理,一般用来设置运行态信息,例如URI数据授权等。 | -| parameters | {[key: string]: any} | 否 | 否 | 不参与匹配,应用自定义数据将直接传递给目标Ability。 | +| parameters | {[key: string]: any} | 否 | 否 | 不参与匹配,应用自定义数据将直接传递给目标应用组件。 | 从隐式Want的定义,可得知: - 调用方传入的want参数,表明调用方需要执行的操作,并提供相关数据以及其他应用类型限制。 -- 待匹配Ability的skills配置,声明其具备的能力([module.json5配置文件](../quick-start/module-configuration-file.md)中的[skills标签](../quick-start/module-configuration-file.md#skills标签)参数)。 +- 待匹配应用组件的skills配置,声明其具备的能力([module.json5配置文件](../quick-start/module-configuration-file.md)中的[skills标签](../quick-start/module-configuration-file.md#skills标签)参数)。 -系统将调用方传入的want参数(包含action、entities、uri和type属性)与已安装待匹配的应用Ability的skills配置(包含actions、entities、uris和type属性)依次进行匹配。当四个属性匹配均通过,则此应用才会被应用选择器展示给用户进行选择。 +系统将调用方传入的want参数(包含action、entities、uri和type属性)与已安装待匹配应用组件的skills配置(包含actions、entities、uris和type属性)依次进行匹配。当四个属性匹配均通过,则此应用才会被应用选择器展示给用户进行选择。 ### want参数的action匹配规则 -将调用方传入的want参数的action与待匹配Ability的skills配置中的actions进行匹配。 +将调用方传入的want参数的action与待匹配应用组件的skills配置中的actions进行匹配。 -- 调用方传入的want参数的action不为空,待匹配Ability的skills配置中的actions为空,则action匹配失败。 +- 调用方传入的want参数的action不为空,待匹配应用组件的skills配置中的actions为空,则action匹配失败。 -- 调用方传入的want参数的action为空,待匹配Ability的skills配置中的actions不为空,则action匹配成功。 +- 调用方传入的want参数的action为空,待匹配应用组件的skills配置中的actions不为空,则action匹配成功。 -- 调用方传入的want参数的action不为空,待匹配Ability的skills配置中的actions不为空且包含调用方传入的want参数的action,则action匹配成功。 +- 调用方传入的want参数的action不为空,待匹配应用组件的skills配置中的actions不为空且包含调用方传入的want参数的action,则action匹配成功。 -- 调用方传入的want参数的action不为空,待匹配Ability的skills配置中的actions不为空且不包含调用方传入的want参数的action,则action匹配失败。 +- 调用方传入的want参数的action不为空,待匹配应用组件的skills配置中的actions不为空且不包含调用方传入的want参数的action,则action匹配失败。 - **图1** want参数的action匹配规则 - - ![want-action](figures/want-action.png) + **图1** want参数的action匹配规则 +![want-action](figures/want-action.png) ### want参数的entities匹配规则 -将调用方传入的want参数的entities与待匹配Ability的skills配置中的entities进行匹配。 - -- 调用方传入的want参数的entities为空,待匹配Ability的skills配置中的entities不为空,则entities匹配成功。 +将调用方传入的want参数的entities与待匹配应用组件的skills配置中的entities进行匹配。 -- 调用方传入的want参数的entities为空,待匹配Ability的skills配置中的entities为空,则entities匹配成功。 +- 调用方传入的want参数的entities为空,待匹配应用组件的skills配置中的entities不为空,则entities匹配成功。 -- 调用方传入的want参数的entities不为空,待匹配Ability的skills配置中的entities为空,则entities匹配失败。 +- 调用方传入的want参数的entities为空,待匹配应用组件的skills配置中的entities为空,则entities匹配成功。 -- 调用方传入的want参数的entities不为空,待匹配Ability的skills配置中的entities不为空且包含调用方传入的want参数的entities,则entities匹配成功。 +- 调用方传入的want参数的entities不为空,待匹配应用组件的skills配置中的entities为空,则entities匹配失败。 -- 调用方传入的want参数的entities不为空,待匹配Ability的skills配置中的entities不为空且不完全包含调用方传入的want参数的entities,则entities匹配失败。 +- 调用方传入的want参数的entities不为空,待匹配应用组件的skills配置中的entities不为空且包含调用方传入的want参数的entities,则entities匹配成功。 - **图2** want参数的entities匹配规则 +- 调用方传入的want参数的entities不为空,待匹配应用组件的skills配置中的entities不为空且不完全包含调用方传入的want参数的entities,则entities匹配失败。 - ![want-entities](figures/want-entities.png) + **图2** want参数的entities匹配规则 +![want-entities](figures/want-entities.png) ### want参数的uri和type匹配规则 -调用方传入的want参数中设置uri和type参数发起组件启动请求,系统会遍历当前系统已安装的组件列表,并逐个匹配待匹配Ability的skills配置中的uris数组,如果待匹配Ability的skills配置中的uris数组中只要有一个可以匹配调用方传入的want参数中设置的uri和type即为匹配成功。 +调用方传入的want参数中设置uri和type参数发起启动应用组件的请求,系统会遍历当前系统已安装的组件列表,并逐个匹配待匹配应用组件的skills配置中的uris数组,如果待匹配应用组件的skills配置中的uris数组中只要有一个可以匹配调用方传入的want参数中设置的uri和type即为匹配成功。 实际应用中,uri和type共存在四种情况,下面将讲解四种情况的具体匹配规则: - 调用方传入的want参数的uri和type都为空。 - 1. 如果待匹配Ability的skills配置中的uris数组为空,匹配成功。 - 2. 如果待匹配Ability的skills配置中的uris数组中存在uri的scheme和type都为空的元素,匹配成功。 + 1. 如果待匹配应用组件的skills配置中的uris数组为空,匹配成功。 + 2. 如果待匹配应用组件的skills配置中的uris数组中存在uri的scheme和type都为空的元素,匹配成功。 3. 除以上两种情况,其他情况均为匹配失败。 - 调用方传入的want参数的uri不为空,type为空。 - 1. 如果待匹配Ability的skills配置中的uris数组为空,匹配失败。 - 2. 如果待匹配Ability的skills配置中的uris数组存在一条数据[uri匹配](#uri匹配规则)成功且type为空,则匹配成功,否则匹配失败。 + 1. 如果待匹配应用组件的skills配置中的uris数组为空,匹配失败。 + 2. 如果待匹配应用组件的skills配置中的uris数组存在一条数据[uri匹配](#uri匹配规则)成功且type为空,则匹配成功,否则匹配失败。 - 调用方传入的want参数的uri为空,type不为空。 - 1. 如果待匹配Ability的skills配置中的uris数组为空,匹配失败。 - 2. 如果待匹配Ability的skills配置中的uris数组存在一条数据uri的scheme为空且[type匹配](#type匹配规则)成功,则匹配成功,否则匹配失败。 - -- 调用方传入的want参数的uri和type都不为空,如图3所示。 - 1. 如果待匹配Ability的skills配置中的uris数组为空,匹配失败。 - 2. 如果待匹配Ability的skills配置中的uris数组存在一条数据[uri匹配](#uri匹配规则)和[type匹配](#type匹配规则)需要均匹配成功,则匹配成功,否则匹配失败。 - -最左uri匹配:当配置文件待匹配Ability的skills配置中的uris数组中只配置scheme;或者只配置scheme和host;或者只配置scheme,host和port时。 -传入want参数的uri的最左边依次需要和scheme;或者scheme和host;或者scheme,host,port都匹配,才满足最左uri匹配。 + 1. 如果待匹配应用组件的skills配置中的uris数组为空,匹配失败。 + 2. 如果待匹配应用组件的skills配置中的uris数组存在一条数据uri的scheme为空且[type匹配](#type匹配规则)成功,则匹配成功,否则匹配失败。 - **图3** want参数中uri和type皆不为空时的匹配规则 +- 调用方传入的want参数的uri和type都不为空,如下图所示。 + 1. 如果待匹配应用组件的skills配置中的uris数组为空,匹配失败。 + 2. 如果待匹配应用组件的skills配置中的uris数组存在一条数据[uri匹配](#uri匹配规则)和[type匹配](#type匹配规则)需要均匹配成功,则匹配成功,否则匹配失败。 - ![want-uri-type1](figures/want-uri-type1.png) +最左uri匹配:当配置文件待匹配应用组件的skills配置中的uris数组中只配置scheme;或者只配置scheme和host;或者只配置scheme、host和port时。传入want参数的uri的最左边依次需要和scheme,或者scheme和host,或者scheme、host和port都匹配,才满足最左uri匹配。 +**图3** want参数中uri和type皆不为空时的匹配规则 +![want-uri-type1](figures/want-uri-type1.png) -下图为了简化描述,称want中传入的uri为w_uri,称want中传入的type为w_type, 待匹配Ability的skills配置中uris为s_uris,其中每个元素为s_uri;按自上而下顺序匹配。 +为了简化描述: +- 称调用方传入的want参数中的uri参数为w_uri;待匹配应用组件的skills配置中uri为s_uri,其中每个元素为s_uri。 +- 称调用方传入的want参数的type参数为w_type,待匹配应用组件的skills数组中uris的type数据为s_type。 -**图4** want参数中uri和type的具体匹配规则 - +**图4** want参数中uri和type的具体匹配规则 ![want-uri-type2](figures/want-uri-type2.png) ### uri匹配规则 -这里为了简化描述,称want中传入的uri为w_uri,待匹配Ability的skills配置中uri为s_uri,具体的匹配规则如下: +具体的匹配规则如下: -- 如果s_uri的scheme为空,当w_uri为空时匹配成功,否则匹配失败; +- 如果s_uri的scheme为空,当w_uri为空时匹配成功,否则匹配失败。 -- 如果s_uri的host为空,当w_uri和s_uri的scheme相同时匹配成功,否则匹配失败; +- 如果s_uri的host为空,当w_uri和s_uri的scheme相同时匹配成功,否则匹配失败。 -- 如果s_uri的port为空,当w_uri和s_uri中的scheme和host相同时匹配成功,否则匹配失败; +- 如果s_uri的port为空,当w_uri和s_uri中的scheme和host相同时匹配成功,否则匹配失败。 -- 如果s_uri的path、pathStartWith和pathRegex都为空,当w_uri和s_uri中的scheme,host和port相同时匹配成功,否则匹配失败; +- 如果s_uri的path、pathStartWith和pathRegex都为空,当w_uri和s_uri中的scheme,host和port相同时匹配成功,否则匹配失败。 -- 如果s_uri的path不为空,当w_uri和s_uri**全路径表达式**相同时匹配成功,否则继续进行pathStartWith的匹配; +- 如果s_uri的path不为空,当w_uri和s_uri**全路径表达式**相同时匹配成功,否则继续进行pathStartWith的匹配。 -- 如果s_uri的pathStartWith不为空,当w_uri包含s_uri**前缀表达式**时匹配成功,否则继续进行pathRegex的匹配; +- 如果s_uri的pathStartWith不为空,当w_uri包含s_uri**前缀表达式**时匹配成功,否则继续进行pathRegex的匹配。 -- 如果s_uri的pathRegex不为空,当w_uri满足s_uri**正则表达式**时匹配成功,否则匹配失败; +- 如果s_uri的pathRegex不为空,当w_uri满足s_uri**正则表达式**时匹配成功,否则匹配失败。 > **说明:** -> 待匹配Ability的skills配置的uris中scheme、host、port、path、pathStartWith和pathRegex属性拼接,如果依次声明了path、pathStartWith和pathRegex属性时,uris将分别拼接为如下三种表达式: -> -> - **全路径表达式**:`scheme://host:port/path` -> -> - **前缀表达式**:`scheme://host:port/pathStartWith` -> -> - **正则表达式**:`scheme://host:port/pathRegex` +> +> 待匹配应用组件的skills配置的uris中scheme、host、port、path、pathStartWith和pathRegex属性拼接,如果依次声明了path、pathStartWith和pathRegex属性时,uris将分别拼接为如下三种表达式: > > - **前缀uri表达式**:当配置文件只配置scheme,或者只配置scheme和host,或者只配置scheme,host和port时,参数传入以配置文件为前缀的Uri > * `scheme://` > * `scheme://host` > * `scheme://host:port` +> - **全路径表达式**:`scheme://host:port/path` +> - **前缀表达式**:`scheme://host:port/pathStartWith` +> - **正则表达式**:`scheme://host:port/pathRegex` ### type匹配规则 > **说明:** -> 此小节所述的type匹配规则的适用性需建立在want参数内type不为空的基础上。当want参数内type为空时请参见[want参数的uri和type匹配规则](#want参数的uri和type匹配规则)。 +> +> 本章节所述的type匹配规则的适用性需建立在want参数内type不为空的基础上。当want参数内type为空时请参见[want参数的uri和type匹配规则](#want参数的uri和type匹配规则)。 -这里为了简化描述,称want中传入的uri为w_type,待匹配Ability的skills数组中uris的type数据为s_type,具体的匹配规则如下: +具体的匹配规则如下: - 如果s_type为空,则匹配失败。 diff --git a/zh-cn/application-dev/application-models/extensionability-overview.md b/zh-cn/application-dev/application-models/extensionability-overview.md index 573d15e25f..1f96b39e7d 100644 --- a/zh-cn/application-dev/application-models/extensionability-overview.md +++ b/zh-cn/application-dev/application-models/extensionability-overview.md @@ -39,8 +39,7 @@ ExtensionAbility组件是基于特定场景(例如服务卡片、输入法等 以[InputMethodExtensionAbility](../reference/apis/js-apis-inputmethod.md)组件为例进行说明,如下图所示,调用方应用发起对InputMethodExtensionAbility组件的调用,此时将先调用输入法管理服务,由输入法管理服务拉起[InputMethodExtensionAbility](../reference/apis/js-apis-inputmethod.md)组件,返回给调用方,同时开始管理其生命周期。 - **图1** 使用InputMethodExtensionAbility组件 - +**图1** 使用InputMethodExtensionAbility组件 ![ExtensionAbility-start](figures/ExtensionAbility-start.png) @@ -48,8 +47,7 @@ ExtensionAbility组件是基于特定场景(例如服务卡片、输入法等 以实现卡片[FormExtensionAbility](../reference/apis/js-apis-app-form-formExtensionAbility.md)为例进行说明。卡片框架提供了[FormExtensionAbility](../reference/apis/js-apis-app-form-formExtensionAbility.md)基类,开发者通过派生此基类(如MyFormExtensionAbility),实现回调(如创建卡片的onCreate()回调、更新卡片的onUpdateForm()回调等)来实现具体卡片功能,具体见开发指导见[服务卡片FormExtensionAbility](service-widget-overview.md)。 -卡片FormExtensionAbility实现方不用关心使用方何时去请求添加、删除卡片,FormExtensionAbility实例及其所在的ExtensionAbility进程的整个生命周期,都是由卡片管理系统服务FormManagerService进行调度管理。 - +卡片FormExtensionAbility实现方不用关心使用方何时去请求添加、删除卡片,FormExtensionAbility实例及其所在的ExtensionAbility进程的整个生命周期,都是由卡片管理系统服务FormManagerService进行调度管理。 ![form_extension](figures/form_extension.png) diff --git a/zh-cn/application-dev/application-models/figures/WidgetCanvasDemo.jpeg b/zh-cn/application-dev/application-models/figures/WidgetCanvasDemo.jpeg index 9c797ff4575ae0aaf9aad27ae5d4d701181faf97..940a988bcc61326702147e4d4d7a9be5805e22ef 100644 GIT binary patch literal 60619 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 z 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 literal 63171 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 diff --git a/zh-cn/application-dev/application-models/figures/stage-concepts.png b/zh-cn/application-dev/application-models/figures/stage-concepts.png index af9525dfb45d8763aad3c515008d9b5eed10a3d5..07dbb380e583291b5f425b21a1dbdbf1d66f4c0e 100644 GIT binary patch literal 8119976 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π_Bj;PMMSTHIbf7 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 diff --git a/zh-cn/application-dev/application-models/hop-cross-device-migration.md b/zh-cn/application-dev/application-models/hop-cross-device-migration.md index cf25e93206..edd2b838a2 100644 --- a/zh-cn/application-dev/application-models/hop-cross-device-migration.md +++ b/zh-cn/application-dev/application-models/hop-cross-device-migration.md @@ -60,10 +60,10 @@ ```json { "module": { - // ... + ... "abilities": [ { - // ... + ... "continuable": true, } ] diff --git a/zh-cn/application-dev/application-models/hop-multi-device-collaboration.md b/zh-cn/application-dev/application-models/hop-multi-device-collaboration.md index 70703d58fc..ae31b11526 100644 --- a/zh-cn/application-dev/application-models/hop-multi-device-collaboration.md +++ b/zh-cn/application-dev/application-models/hop-multi-device-collaboration.md @@ -63,7 +63,7 @@ // 其中createDeviceManager接口为系统API deviceManager.createDeviceManager('ohos.samples.demo', (err, dm) => { if (err) { - // ... + ... return } dmClass = dm @@ -83,7 +83,7 @@ } ``` -4. 设置目标组件参数,调用[startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)接口,启动UIAbility或ServiceExtensionAbility。 +4. 设置目标组件参数,调用[`startAbility()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)接口,启动UIAbility或ServiceExtensionAbility。 ```ts let want = { @@ -94,9 +94,9 @@ } // context为发起端UIAbility的AbilityContext this.context.startAbility(want).then(() => { - // ... + ... }).catch((err) => { - // ... + ... }) ``` @@ -150,9 +150,9 @@ } // context为发起端UIAbility的AbilityContext this.context.startAbilityForResult(want).then((data) => { - // ... + ... }).catch((err) => { - // ... + ... }) ``` @@ -170,7 +170,7 @@ } // context为目标端UIAbility的AbilityContext this.context.terminateSelfWithResult(abilityResult, (err) => { - // ... + ... }); ``` @@ -179,17 +179,17 @@ ```ts const RESULT_CODE: number = 1001; - // ... + ... // context为调用方UIAbility的UIAbilityContext this.context.startAbilityForResult(want).then((data) => { if (data?.resultCode === RESULT_CODE) { // 解析目标端UIAbility返回的信息 let info = data.want?.parameters?.info - // ... + ... } }).catch((err) => { - // ... + ... }) ``` diff --git a/zh-cn/application-dev/application-models/inputmethodextentionability.md b/zh-cn/application-dev/application-models/inputmethodextentionability.md index 3d05804f7e..5e1377162f 100644 --- a/zh-cn/application-dev/application-models/inputmethodextentionability.md +++ b/zh-cn/application-dev/application-models/inputmethodextentionability.md @@ -344,7 +344,7 @@ InputMethodExtensionAbility通过[InputMethodExtensionContext](../reference/apis ```ts { "module": { - // ... + ... "extensionAbilities": [ { "description": "inputMethod", diff --git a/zh-cn/application-dev/application-models/itc-with-emitter.md b/zh-cn/application-dev/application-models/itc-with-emitter.md index a5871cf844..ee78669c5f 100644 --- a/zh-cn/application-dev/application-models/itc-with-emitter.md +++ b/zh-cn/application-dev/application-models/itc-with-emitter.md @@ -14,12 +14,12 @@ Emitter的开发步骤如下: // 定义一个eventId为1的事件 let event = { - eventId: 1 + eventId: 1 }; // 收到eventId为1的事件后执行该回调 let callback = (eventData) => { - console.info('event callback'); + console.info('event callback'); }; // 订阅eventId为1的事件 @@ -30,21 +30,21 @@ Emitter的开发步骤如下: ```ts import emitter from "@ohos.events.emitter"; - + // 定义一个eventId为1的事件,事件优先级为Low let event = { - eventId: 1, - priority: emitter.EventPriority.LOW + eventId: 1, + priority: emitter.EventPriority.LOW }; - + let eventData = { - data: { - "content": "c", - "id": 1, - "isEmpty": false, - } + data: { + "content": "c", + "id": 1, + "isEmpty": false, + } }; - + // 发送eventId为1的事件,事件内容为eventData emitter.emit(event, eventData); ``` diff --git a/zh-cn/application-dev/application-models/itc-with-worker.md b/zh-cn/application-dev/application-models/itc-with-worker.md index 994e373430..912654e0fd 100644 --- a/zh-cn/application-dev/application-models/itc-with-worker.md +++ b/zh-cn/application-dev/application-models/itc-with-worker.md @@ -10,13 +10,13 @@ Worker的开发步骤如下: 1. 在工程的[模块级build-profile.json5](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ohos-building-configuration-0000001218440654#section6887184182020)文件的buildOption属性中添加配置信息。 ```ts - "buildOption": { - "sourceOption": { - "workers": [ - "./src/main/ets/workers/worker.ts" - ] - } + "buildOption": { + "sourceOption": { + "workers": [ + "./src/main/ets/workers/worker.ts" + ] } + } ``` 2. 根据build-profile.json5中的配置创建对应的worker.ts文件。 @@ -28,9 +28,9 @@ Worker的开发步骤如下: // 处理来自主线程的消息 parent.onmessage = function(message) { - console.info("onmessage: " + message) - // 发送消息到主线程 - parent.postMessage("message from worker thread.") + console.info("onmessage: " + message) + // 发送消息到主线程 + parent.postMessage("message from worker thread.") } ``` @@ -47,10 +47,10 @@ Worker的开发步骤如下: // 处理来自worker线程的消息 wk.onmessage = function(message) { - console.info("message from worker: " + message) + console.info("message from worker: " + message) - // 根据业务按需停止worker线程 - wk.terminate() + // 根据业务按需停止worker线程 + wk.terminate(); } ``` @@ -58,23 +58,22 @@ Worker的开发步骤如下: ```ts import worker from '@ohos.worker'; - + let wk = new worker.ThreadWorker("../workers/worker.ts"); - + // 发送消息到worker线程 wk.postMessage("message from main thread.") - + // 处理来自worker线程的消息 wk.onmessage = function(message) { - console.info("message from worker: " + message) - - // 根据业务按需停止worker线程 - wk.terminate() + console.info("message from worker: " + message) + + // 根据业务按需停止worker线程 + wk.terminate(); } ``` -**说明:** - -- build-profile.json5中配置的worker.ts的相对路径都为`./src/main/ets/workers/worker.ts`时,在Stage模型下创建worker需要传入路径`entry/ets/workers/worker.ts`;在FA模型下创建worker需要传入路径`../workers/worker.ts`。 - -- 主线程与Worker线程间支持的数据类型参考[序列化支持类型](../reference/apis/js-apis-worker.md#序列化支持类型)。 +> **说明:** +> +> - build-profile.json5中配置的worker.ts的相对路径都为`./src/main/ets/workers/worker.ts`时,在Stage模型下创建worker需要传入路径`entry/ets/workers/worker.ts`;在FA模型下创建worker需要传入路径`../workers/worker.ts`。 +> - 主线程与Worker线程间支持的数据类型参考[序列化支持类型](../reference/apis/js-apis-worker.md#序列化支持类型)。 diff --git a/zh-cn/application-dev/application-models/mission-management-launch-type.md b/zh-cn/application-dev/application-models/mission-management-launch-type.md index 2d1ab51c69..2c4cb855d3 100644 --- a/zh-cn/application-dev/application-models/mission-management-launch-type.md +++ b/zh-cn/application-dev/application-models/mission-management-launch-type.md @@ -10,12 +10,12 @@ **图1** 任务与singleton模式 ![mission-and-singleton](figures/mission-and-singleton.png) -- multiton:多实例模式,每次调用[startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法,都会在应用进程中创建一个该Ability的实例。 +- multiton:多实例模式,每次调用[`startAbility()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法,都会在应用进程中创建一个该UIAbility实例。 **图2** 任务与multiton模式 ![mission-and-multiton](figures/mission-and-multiton.png) -- specified:指定实例模式,由[AbilityStage](abilitystage.md)的([onAcceptWant()](../reference/apis/js-apis-app-ability-abilityStage.md#abilitystageonacceptwant))决定是否创建新的实例。 +- specified:指定实例模式,由[AbilityStage](abilitystage.md)的([`onAcceptWant()`](../reference/apis/js-apis-app-ability-abilityStage.md#abilitystageonacceptwant))决定是否创建新的UIAbility实例。 **图3** 任务与specified模式 ![mission-and-specified](figures/mission-and-specified.png) @@ -24,8 +24,9 @@ 每个UIAbility实例都对应了一个最近任务列表中看到的Mission(任务)。 -每个UIAbility实例对应的Mission都保留有该UIAbility实例的快照(Snapshot),UIAbility实例销毁后,Mission信息(包括Ability信息和任务快照)依然会保留,直到用户删除该任务。 +每个UIAbility实例对应的Mission都保留有该UIAbility实例的快照(Snapshot),UIAbility实例销毁后,Mission信息(包括UIAbility信息和任务快照)依然会保留,直到用户删除该任务。 > **说明:** +> > specified模式只在Stage模型上支持,FA模型不支持。 diff --git a/zh-cn/application-dev/application-models/mission-management-overview.md b/zh-cn/application-dev/application-models/mission-management-overview.md index 79f81bbe31..b7dc615059 100644 --- a/zh-cn/application-dev/application-models/mission-management-overview.md +++ b/zh-cn/application-dev/application-models/mission-management-overview.md @@ -28,7 +28,7 @@ - 将一个指定的任务切换到前台。 -一个UIAbility实例对应一个单独的任务,因此应用调用[startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法启动一个UIAbility时,就是创建了一个任务。 +一个UIAbility实例对应一个单独的任务,因此应用调用[`startAbility()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法启动一个UIAbility时,就是创建了一个任务。 1. 桌面应用调用[missionManager](../reference/apis/js-apis-application-missionManager.md)的接口管理任务,需要申请`ohos.permission.MANAGE_MISSIONS`权限,配置方式请参见[配置文件权限声明](../security/accesstoken-guidelines.md#配置文件权限声明)。 @@ -38,34 +38,34 @@ import missionManager from '@ohos.app.ability.missionManager' let listener = { - // 任务创建 - onMissionCreated: function (mission) { - console.info("--------onMissionCreated-------") - }, - // 任务销毁 - onMissionDestroyed: function (mission) { - console.info("--------onMissionDestroyed-------") - }, - // 任务快照变化 - onMissionSnapshotChanged: function (mission) { - console.info("--------onMissionSnapshotChanged-------") - }, - // 任务被移动到前台 - onMissionMovedToFront: function (mission) { - console.info("--------onMissionMovedToFront-------") - }, - // 任务图标变化 - onMissionIconUpdated: function (mission, icon) { - console.info("--------onMissionIconUpdated-------") - }, - // 任务名称变化 - onMissionLabelUpdated: function (mission) { - console.info("--------onMissionLabelUpdated-------") - }, - // 任务实例被关闭 - onMissionClosed: function (mission) { - console.info("--------onMissionClosed-------") - } + // 任务创建 + onMissionCreated: function (mission) { + console.info("--------onMissionCreated-------") + }, + // 任务销毁 + onMissionDestroyed: function (mission) { + console.info("--------onMissionDestroyed-------") + }, + // 任务快照变化 + onMissionSnapshotChanged: function (mission) { + console.info("--------onMissionSnapshotChanged-------") + }, + // 任务被移动到前台 + onMissionMovedToFront: function (mission) { + console.info("--------onMissionMovedToFront-------") + }, + // 任务图标变化 + onMissionIconUpdated: function (mission, icon) { + console.info("--------onMissionIconUpdated-------") + }, + // 任务名称变化 + onMissionLabelUpdated: function (mission) { + console.info("--------onMissionLabelUpdated-------") + }, + // 任务实例被关闭 + onMissionClosed: function (mission) { + console.info("--------onMissionClosed-------") + } }; // 1.注册任务变化通知 @@ -73,56 +73,56 @@ // 2.获取系统最近20个任务 missionManager.getMissionInfos("", 20, (error, missions) => { - console.info("getMissionInfos is called, error.code = " + error.code); - console.info("size = " + missions.length); - console.info("missions = " + JSON.stringify(missions)); + console.info("getMissionInfos is called, error.code = " + error.code); + console.info("size = " + missions.length); + console.info("missions = " + JSON.stringify(missions)); }); // 3.获取单个任务的详细信息() let missionId = 11; // 11只是示例,实际是从系统中获取的任务id,下面类似 let mission = missionManager.getMissionInfo("", missionId).catch(function (err) { - console.info(err); + console.info(err); }); // 4.获取任务快照 missionManager.getMissionSnapShot("", missionId, (error, snapshot) => { - console.info("getMissionSnapShot is called, error.code = " + error.code); - console.info("bundleName = " + snapshot.ability.bundleName); + console.info("getMissionSnapShot is called, error.code = " + error.code); + console.info("bundleName = " + snapshot.ability.bundleName); }) // 5.获取低分辨任务快照 missionManager.getLowResolutionMissionSnapShot("", missionId, (error, snapshot) => { - console.info("getLowResolutionMissionSnapShot is called, error.code = " + error.code); - console.info("bundleName = " + snapshot.ability.bundleName); + console.info("getLowResolutionMissionSnapShot is called, error.code = " + error.code); + console.info("bundleName = " + snapshot.ability.bundleName); }) // 6.加锁/解锁任务 missionManager.lockMission(missionId).then(() => { - console.info("lockMission is called "); + console.info("lockMission is called "); }); missionManager.unlockMission(missionId).then(() => { - console.info("unlockMission is called "); + console.info("unlockMission is called "); }); // 7.把任务切到前台 missionManager.moveMissionToFront(missionId).then(() => { - console.info("moveMissionToFront is called "); + console.info("moveMissionToFront is called "); }); // 8.删除单个任务 missionManager.clearMission(missionId).then(() => { - console.info("clearMission is called "); + console.info("clearMission is called "); }); // 9.删除全部任务 missionManager.clearAllMissions().catch(function (err) { - console.info(err); + console.info(err); }); // 10.解注册任务变化通知 missionManager.off('mission', listenerId, (error) => { - console.info("unregisterMissionListener"); + console.info("unregisterMissionListener"); }) ``` diff --git a/zh-cn/application-dev/application-models/mission-set-icon-name-for-task-snapshot.md b/zh-cn/application-dev/application-models/mission-set-icon-name-for-task-snapshot.md index e0ff7f945c..edca5e5077 100644 --- a/zh-cn/application-dev/application-models/mission-set-icon-name-for-task-snapshot.md +++ b/zh-cn/application-dev/application-models/mission-set-icon-name-for-task-snapshot.md @@ -20,8 +20,10 @@ ```ts let imagePixelMap: PixelMap = undefined; // 需要获取图片PixelMap信息 -this.context.setMissionIcon(imagePixelMap, (err) => { - console.error(`setMissionLabel failed, code is ${err.code}, message is ${err.message}`); +context.setMissionIcon(imagePixelMap, (err) => { + if (err.code) { + console.error(`Failed to set mission icon. Code is ${err.code}, message is ${err.message}`); + } }) ``` @@ -36,9 +38,9 @@ this.context.setMissionIcon(imagePixelMap, (err) => { ```ts this.context.setMissionLabel('test').then(() => { - console.info('setMissionLabel succeeded.'); + console.info('Succeeded in seting mission label.'); }).catch((err) => { - console.error(`setMissionLabel failed, code is ${err.code}, message is ${err.message}`); + console.error(`Failed to set mission label. Code is ${err.code}, message is ${err.message}`); }); ``` diff --git a/zh-cn/application-dev/application-models/page-mission-stack.md b/zh-cn/application-dev/application-models/page-mission-stack.md index 09fedfd21d..f315070439 100644 --- a/zh-cn/application-dev/application-models/page-mission-stack.md +++ b/zh-cn/application-dev/application-models/page-mission-stack.md @@ -5,7 +5,7 @@ 单个UIAbility组件可以实现多个页面,并在多个页面之间跳转,这种UIAbility组件内部的页面跳转关系称为“页面栈”,由ArkUI框架统一管理,如下图中的UIAbility1的Page1->Page2->Page3和UIAbility2的PageA->PageB->PageC。 - **图1** 页面栈示意图   +**图1** 页面栈示意图 ![mission-record](figures/mission-record.png) - 页面栈的形成(下面2/3/5/6步骤为页面跳转,由ArkUI管理) @@ -41,11 +41,11 @@ MissionList任务链记录了任务之间的拉起关系,但是这个任务链可能会断开,有以下几种情况会导致任务链的断开: -- 进入任务列表,把任务链中间某个任务移动到前台。 +- 进入任务列表,把任务链中间某个任务移动到前台。 ![mission-chain1](figures/mission-chain1.png) -- 进入任务列表,把任务链中间某个任务清理掉。 +- 进入任务列表,把任务链中间某个任务清理掉。 ![mission-chain2](figures/mission-chain2.png) -- 单实例UIAbility的任务,被不同的任务反复拉起(AbilityB为单例)。 +- 单实例UIAbility的任务,被不同的任务反复拉起(AbilityB为单例)。 ![mission-chain3](figures/mission-chain3.png) 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 38b0c82c58..dc515b5a96 100644 --- a/zh-cn/application-dev/application-models/pageability-launch-type.md +++ b/zh-cn/application-dev/application-models/pageability-launch-type.md @@ -17,13 +17,13 @@ ```json { "module": { - // ... + ... "abilities": [ { // singleton: 单实例模式 // standard: 多实例模式 "launchType": "standard", - // ... + ... } ] } diff --git a/zh-cn/application-dev/application-models/pageability-overview.md b/zh-cn/application-dev/application-models/pageability-overview.md index 714abb095e..463b850a85 100644 --- a/zh-cn/application-dev/application-models/pageability-overview.md +++ b/zh-cn/application-dev/application-models/pageability-overview.md @@ -1,7 +1,7 @@ # PageAbility组件概述 -PageAbility是包含UI界面、提供展示UI能力的应用组件,主要用于与用户交互。 +PageAbility是包含UI、提供展示UI能力的应用组件,主要用于与用户交互。 开发者通过DevEco Studio开发平台创建PageAbility时,DevEco Studio会自动创建相关模板代码。PageAbility相关能力通过单独的featureAbility实现,生命周期相关回调则通过app.js/app.ets中各个回调函数实现。 diff --git a/zh-cn/application-dev/application-models/redirection-rules.md b/zh-cn/application-dev/application-models/redirection-rules.md index 59424cf042..ab1a2c93a5 100644 --- a/zh-cn/application-dev/application-models/redirection-rules.md +++ b/zh-cn/application-dev/application-models/redirection-rules.md @@ -22,11 +22,11 @@ PageAbility作为可见Ability,可以通过startAbility启动有界面的且 ```ts { "module": { - // ... + ... "abilities": [ { "visible": "true", - // ... + ... } ] } diff --git a/zh-cn/application-dev/application-models/service-widget-overview.md b/zh-cn/application-dev/application-models/service-widget-overview.md index efc5bb7e78..dc3c0a0ab3 100644 --- a/zh-cn/application-dev/application-models/service-widget-overview.md +++ b/zh-cn/application-dev/application-models/service-widget-overview.md @@ -6,8 +6,7 @@ ## 服务卡片架构 - **图1** 服务卡片架构 - +**图1** 服务卡片架构 ![WidgetArchitecture](figures/WidgetArchitecture.png) 卡片的基本概念: @@ -24,8 +23,7 @@ 卡片的常见使用步骤如下。 - **图2** 卡片常见使用步骤 - +**图2** 卡片常见使用步 ![WidgetUse](figures/WidgetUse.png) 1. 长按“桌面图标”,弹出操作菜单。 @@ -55,4 +53,4 @@ ArkTS卡片与JS卡片具备不同的实现原理及特征,在场景能力上 | 自定义绘制 | 不支持 | 支持 | | 逻辑代码执行(不包含import能力) | 不支持 | 支持 | -相比于JS卡片,ArkTS卡片在能力和场景方面更加丰富,因此无论开发何种用途的卡片,都推荐使用ArkTS卡片,因为它可以提高开发效率并实现动态化。但如果只需要做静态页面展示的卡片,可以考虑使用JS卡片。 +推荐在开发需求需要动态能力的卡片时使用ArkTS卡片,因为它拥有更加丰富的能力和适应更多的场景,能够提高效率并实现动态化。但如果只需要静态展示卡片,可以考虑使用JS卡片。 diff --git a/zh-cn/application-dev/application-models/serviceextensionability.md b/zh-cn/application-dev/application-models/serviceextensionability.md index 3e20a94e87..c984445c69 100644 --- a/zh-cn/application-dev/application-models/serviceextensionability.md +++ b/zh-cn/application-dev/application-models/serviceextensionability.md @@ -1,17 +1,16 @@ # ServiceExtensionAbility -- [ServiceExtensionAbility](#serviceextensionability) - - [概述](#概述) - - [生命周期](#生命周期) - - [实现一个后台服务(仅对系统应用开放)](#实现一个后台服务仅对系统应用开放) - - [开发准备](#开发准备) - - [定义IDL接口](#定义idl接口) - - [创建ServiceExtensionAbility](#创建serviceextensionability) - - [启动一个后台服务(仅对系统应用开放)](#启动一个后台服务仅对系统应用开放) - - [连接一个后台服务](#连接一个后台服务) - - [客户端与服务端通信](#客户端与服务端通信) - - [服务端对客户端身份校验](#服务端对客户端身份校验) - - [相关示例](#相关示例) +- [概述](#概述) +- [生命周期](#生命周期) +- [实现一个后台服务(仅对系统应用开放)](#实现一个后台服务仅对系统应用开放) + - [开发准备](#开发准备) + - [定义IDL接口](#定义idl接口) + - [创建ServiceExtensionAbility](#创建serviceextensionability) +- [启动一个后台服务(仅对系统应用开放)](#启动一个后台服务仅对系统应用开放) +- [连接一个后台服务](#连接一个后台服务) +- [客户端与服务端通信](#客户端与服务端通信) +- [服务端对客户端身份校验](#服务端对客户端身份校验) +- [相关示例](#相关示例) ## 概述 @@ -41,7 +40,7 @@ [ServiceExtensionAbility](../reference/apis/js-apis-app-ability-serviceExtensionAbility.md)提供了onCreate()、onRequest()、onConnect()、onDisconnect()和onDestory()生命周期回调,根据需要重写对应的回调方法。下图展示了ServiceExtensionAbility的生命周期。 - **图1** ServiceExtensionAbility生命周期 + **图1** ServiceExtensionAbility生命周期 ![ServiceExtensionAbility-lifecycle](figures/ServiceExtensionAbility-lifecycle.png) - **onCreate** @@ -182,7 +181,7 @@ export default class ServiceExtImpl extends IdlServiceExtStub { ```json { "module": { - // ... + ... "extensionAbilities": [ { "name": "ServiceExtAbility", @@ -207,41 +206,43 @@ export default class ServiceExtImpl extends IdlServiceExtStub { 1. 在系统应用中启动一个新的ServiceExtensionAbility。示例中的context的获取方式请参见[获取UIAbility的上下文信息](uiability-usage.md#获取uiability的上下文信息)。 ```ts + let context = ...; // UIAbilityContext let want = { - "deviceId": "", - "bundleName": "com.example.myapplication", - "abilityName": "ServiceExtAbility" + "deviceId": "", + "bundleName": "com.example.myapplication", + "abilityName": "ServiceExtAbility" }; - this.context.startServiceExtensionAbility(want).then(() => { - console.info('startServiceExtensionAbility success'); - }).catch((error) => { - console.info('startServiceExtensionAbility failed'); + context.startServiceExtensionAbility(want).then(() => { + console.info('Succeeded in starting ServiceExtensionAbility.'); + }).catch((err) => { + console.error(`Failed to start ServiceExtensionAbility. Code is ${err.code}, message is ${err.message}`); }) ``` 2. 在系统应用中停止一个已启动的ServiceExtensionAbility。 ```ts + let context = ...; // UIAbilityContext let want = { - "deviceId": "", - "bundleName": "com.example.myapplication", - "abilityName": "ServiceExtAbility" + "deviceId": "", + "bundleName": "com.example.myapplication", + "abilityName": "ServiceExtAbility" }; - this.context.stopServiceExtensionAbility(want).then(() => { - console.info('stopServiceExtensionAbility success'); - }).catch((error) => { - console.info('stopServiceExtensionAbility failed'); + context.stopServiceExtensionAbility(want).then(() => { + console.info('Succeeded in stoping ServiceExtensionAbility.'); + }).catch((err) => { + console.error(`Failed to stop ServiceExtensionAbility. Code is ${err.code}, message is ${err.message}`); }) ``` 3. 已启动的ServiceExtensionAbility停止自身。 ```ts - // this是当前ServiceExtensionAbility - this.context.terminateSelf().then(() => { - console.info('terminateSelf success'); - }).catch((error) => { - console.info('terminateSelf failed'); + let context = ...; // ServiceExtensionContext + context.terminateSelf().then(() => { + console.info('Succeeded in terminating self.'); + }).catch((err) => { + console.error(`Failed to terminate self. Code is ${err.code}, message is ${err.message}`); }) ``` @@ -262,27 +263,27 @@ ServiceExtensionAbility服务组件在[onConnect()](../reference/apis/js-apis-ap ```ts let want = { - "deviceId": "", - "bundleName": "com.example.myapplication", - "abilityName": "ServiceExtAbility" + "deviceId": "", + "bundleName": "com.example.myapplication", + "abilityName": "ServiceExtAbility" }; let options = { - onConnect(elementName, remote) { - /* 此处的入参remote为ServiceExtensionAbility在onConnect生命周期回调中返回的对象, - * 开发者通过这个对象便可以与ServiceExtensionAbility进行通信,具体通信方式见下文 - */ - console.info('onConnect callback'); - if (remote === null) { - console.info(`onConnect remote is null`); - return; - } - }, - onDisconnect(elementName) { - console.info('onDisconnect callback') - }, - onFailed(code) { - console.info('onFailed callback') + onConnect(elementName, remote) { + /* 此处的入参remote为ServiceExtensionAbility在onConnect生命周期回调中返回的对象, + * 开发者通过这个对象便可以与ServiceExtensionAbility进行通信,具体通信方式见下文 + */ + console.info('onConnect callback'); + if (remote === null) { + console.info(`onConnect remote is null`); + return; } + }, + onDisconnect(elementName) { + console.info('onDisconnect callback') + }, + onFailed(code) { + console.info('onFailed callback') + } } // 建立连接后返回的Id需要保存下来,在解绑服务时需要作为参数传入 let connectionId = this.context.connectServiceExtensionAbility(want, options); @@ -293,9 +294,9 @@ ServiceExtensionAbility服务组件在[onConnect()](../reference/apis/js-apis-ap ```ts // connectionId为调用connectServiceExtensionAbility接口时的返回值,需开发者自行维护 this.context.disconnectServiceExtensionAbility(connectionId).then((data) => { - console.info('disconnectServiceExtensionAbility success'); + console.info('disconnectServiceExtensionAbility success'); }).catch((error) => { - console.error('disconnectServiceExtensionAbility failed'); + console.error('disconnectServiceExtensionAbility failed'); }) ``` @@ -310,27 +311,27 @@ ServiceExtensionAbility服务组件在[onConnect()](../reference/apis/js-apis-ap import IdlServiceExtProxy from '../IdlServiceExt/idl_service_ext_proxy'; let options = { - onConnect(elementName, remote) { - console.info('onConnect callback'); - if (remote === null) { - console.info(`onConnect remote is null`); - return; - } - let serviceExtProxy = new IdlServiceExtProxy(remote); - // 通过接口调用的方式进行通信,屏蔽了RPC通信的细节,简洁明了 - serviceExtProxy.processData(1, (errorCode, retVal) => { - console.log(`processData, errorCode: ${errorCode}, retVal: ${retVal}`); - }); - serviceExtProxy.insertDataToMap('theKey', 1, (errorCode) => { - console.log(`insertDataToMap, errorCode: ${errorCode}`); - }) - }, - onDisconnect(elementName) { - console.info('onDisconnect callback') - }, - onFailed(code) { - console.info('onFailed callback') + onConnect(elementName, remote) { + console.info('onConnect callback'); + if (remote === null) { + console.info(`onConnect remote is null`); + return; } + let serviceExtProxy = new IdlServiceExtProxy(remote); + // 通过接口调用的方式进行通信,屏蔽了RPC通信的细节,简洁明了 + serviceExtProxy.processData(1, (errorCode, retVal) => { + console.log(`processData, errorCode: ${errorCode}, retVal: ${retVal}`); + }); + serviceExtProxy.insertDataToMap('theKey', 1, (errorCode) => { + console.log(`insertDataToMap, errorCode: ${errorCode}`); + }) + }, + onDisconnect(elementName) { + console.info('onDisconnect callback') + }, + onFailed(code) { + console.info('onFailed callback') + } } ``` @@ -338,40 +339,40 @@ ServiceExtensionAbility服务组件在[onConnect()](../reference/apis/js-apis-ap ```ts import rpc from '@ohos.rpc'; - + const REQUEST_CODE = 1; let options = { - onConnect(elementName, remote) { - console.info('onConnect callback'); - if (remote === null) { - console.info(`onConnect remote is null`); - return; - } - // 直接调用rpc的接口向服务端发送消息,客户端需自行对入参进行序列化,对返回值进行反序列化,操作繁琐 - let option = new rpc.MessageOption(); - let data = new rpc.MessageSequence(); - let reply = new rpc.MessageSequence(); - data.writeInt(100); - - // @param code 表示客户端发送的服务请求代码。 - // @param data 表示客户端发送的{@link MessageSequence}对象。 - // @param reply 表示远程服务发送的响应消息对象。 - // @param options 指示操作是同步的还是异步的。 - // - // @return 如果操作成功返回{@code true}; 否则返回 {@code false}。 - remote.sendMessageRequest(REQUEST_CODE, data, reply, option).then((ret) => { - let msg = reply.readInt(); - console.info(`sendMessageRequest ret:${ret} msg:${msg}`); - }).catch((error) => { - console.info('sendMessageRequest failed'); - }); - }, - onDisconnect(elementName) { - console.info('onDisconnect callback') - }, - onFailed(code) { - console.info('onFailed callback') + onConnect(elementName, remote) { + console.info('onConnect callback'); + if (remote === null) { + console.info(`onConnect remote is null`); + return; } + // 直接调用rpc的接口向服务端发送消息,客户端需自行对入参进行序列化,对返回值进行反序列化,操作繁琐 + let option = new rpc.MessageOption(); + let data = new rpc.MessageSequence(); + let reply = new rpc.MessageSequence(); + data.writeInt(100); + + // @param code 表示客户端发送的服务请求代码。 + // @param data 表示客户端发送的{@link MessageSequence}对象。 + // @param reply 表示远程服务发送的响应消息对象。 + // @param options 指示操作是同步的还是异步的。 + // + // @return 如果操作成功返回{@code true}; 否则返回 {@code false}。 + remote.sendMessageRequest(REQUEST_CODE, data, reply, option).then((ret) => { + let msg = reply.readInt(); + console.info(`sendMessageRequest ret:${ret} msg:${msg}`); + }).catch((error) => { + console.info('sendMessageRequest failed'); + }); + }, + onDisconnect(elementName) { + console.info('onDisconnect callback') + }, + onFailed(code) { + console.info('onFailed callback') + } } ``` @@ -386,8 +387,8 @@ ServiceExtensionAbility服务组件在[onConnect()](../reference/apis/js-apis-ap ```ts import rpc from '@ohos.rpc'; import bundleManager from '@ohos.bundle.bundleManager'; - import {processDataCallback} from './i_idl_service_ext'; - import {insertDataToMapCallback} from './i_idl_service_ext'; + import { processDataCallback } from './i_idl_service_ext'; + import { insertDataToMapCallback } from './i_idl_service_ext'; import IdlServiceExtStub from './idl_service_ext_stub'; const ERR_OK = 0; @@ -402,7 +403,7 @@ ServiceExtensionAbility服务组件在[onConnect()](../reference/apis/js-apis-ap bundleManager.getBundleNameByUid(callerUid).then((callerBundleName) => { console.info(TAG, 'getBundleNameByUid: ' + callerBundleName); // 对客户端包名进行识别 - if (callerBundleName != 'com.example.connectextapp') { // 识别不通过 + if (callerBundleName != 'com.example.connectextapp') { // 识别不通过 console.info(TAG, 'The caller bundle is not in whitelist, reject'); return; } @@ -430,15 +431,15 @@ ServiceExtensionAbility服务组件在[onConnect()](../reference/apis/js-apis-ap import {processDataCallback} from './i_idl_service_ext'; import {insertDataToMapCallback} from './i_idl_service_ext'; import IdlServiceExtStub from './idl_service_ext_stub'; - + const ERR_OK = 0; const ERR_DENY = -1; const TAG: string = "[IdlServiceExtImpl]"; - + export default class ServiceExtImpl extends IdlServiceExtStub { processData(data: number, callback: processDataCallback): void { console.info(TAG, `processData: ${data}`); - + let callerTokenId = rpc.IPCSkeleton.getCallingTokenId(); let accessManger = abilityAccessCtrl.createAtManager(); // 所校验的具体权限由开发者自行选择,此处ohos.permission.SET_WALLPAPER只作为示例 @@ -451,7 +452,7 @@ ServiceExtensionAbility服务组件在[onConnect()](../reference/apis/js-apis-ap } callback(ERR_OK, data + 1); // 鉴权通过,执行正常业务逻辑 } - + insertDataToMap(key: string, val: number, callback: insertDataToMapCallback): void { // 开发者自行实现业务逻辑 console.log(TAG, `insertDataToMap, key: ${key} val: ${val}`); 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 b3e6271352..82a97669ed 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 @@ -12,7 +12,7 @@ Stage模型提供UIAbility和ExtensionAbility两种类型的组件,这两种组件都有具体的类承载,支持面向对象的开发方式。 - - UIAbility组件是一种包含UI界面的应用组件,主要用于和用户交互。例如,图库类应用可以在UIAbility组件中展示图片瀑布流,在用户选择某个图片后,在新的页面中展示图片的详细内容。同时用户可以通过返回键返回到瀑布流页面。UIAbility的生命周期只包含创建/销毁/前台/后台等状态,与显示相关的状态通过WindowStage的事件暴露给开发者。 + - UIAbility组件是一种包含UI的应用组件,主要用于和用户交互。例如,图库类应用可以在UIAbility组件中展示图片瀑布流,在用户选择某个图片后,在新的页面中展示图片的详细内容。同时用户可以通过返回键返回到瀑布流页面。UIAbility的生命周期只包含创建/销毁/前台/后台等状态,与显示相关的状态通过WindowStage的事件暴露给开发者。 - ExtensionAbility组件是一种面向特定场景的应用组件。开发者并不直接从ExtensionAbility派生,而是需要使用ExtensionAbility的派生类。目前ExtensionAbility有用于卡片场景的FormExtensionAbility,用于输入法场景的InputMethodExtensionAbility,用于闲时任务场景的WorkSchedulerExtensionAbility等多种派生类,这些派生类都是基于特定场景提供的。例如,用户在桌面创建应用的卡片,需要应用开发者从FormExtensionAbility派生,实现其中的回调函数,并在配置文件中配置该能力。ExtensionAbility派生类实例由用户触发创建,并由系统管理生命周期。在Stage模型上,普通应用开发者不能开发自定义服务,而需要根据自身的业务场景通过ExtensionAbility的派生类来实现。 - [WindowStage](../windowmanager/application-window-stage.md) @@ -32,7 +32,7 @@ 基于Stage模型开发应用时,在应用模型部分,涉及如下开发过程。 - **表1** Stage模型开发流程 +**表1** Stage模型开发流程 | 任务 | 简介 | 相关指导 | | -------- | -------- | -------- | diff --git a/zh-cn/application-dev/application-models/start-page.md b/zh-cn/application-dev/application-models/start-page.md index fb2c8c2ffe..2e2b98699f 100644 --- a/zh-cn/application-dev/application-models/start-page.md +++ b/zh-cn/application-dev/application-models/start-page.md @@ -83,7 +83,7 @@ struct Index { @State message: string = 'Hello World' build() { - // ... + ... Button("startAbility") .onClick(() => { featureAbility.startAbility({ @@ -98,7 +98,7 @@ struct Index { console.info("startAbility failed errcode:" + err.code) }) }) - // ... + ... Button("page2") .onClick(() => { featureAbility.startAbility({ @@ -113,7 +113,7 @@ struct Index { console.info("startAbility failed errcode:" + err.code) }) }) - // ... + ... } } ``` @@ -136,7 +136,7 @@ export default { }) }, onDestroy() { - // ... + ... }, } ``` diff --git a/zh-cn/application-dev/application-models/start-pageability-from-stage.md b/zh-cn/application-dev/application-models/start-pageability-from-stage.md index e5f56c9330..39f6294c22 100644 --- a/zh-cn/application-dev/application-models/start-pageability-from-stage.md +++ b/zh-cn/application-dev/application-models/start-pageability-from-stage.md @@ -21,7 +21,7 @@ export default class EntryAbility extends UIAbility { onWindowStageCreate(windowStage) { console.info("EntryAbility onWindowStageCreate") windowStage.loadContent('pages/Index', (err, data) => { - // ... + ... }); let want = { bundleName: "com.ohos.fa", @@ -66,7 +66,7 @@ export default class EntryAbility extends UIAbility { onWindowStageCreate(windowStage) { console.info("EntryAbility onWindowStageCreate") windowStage.loadContent('pages/Index', (err, data) => { - // ... + ... }); let want = { bundleName: "com.ohos.fa", diff --git a/zh-cn/application-dev/application-models/start-serviceability.md b/zh-cn/application-dev/application-models/start-serviceability.md index c097ebdee1..765641bc9c 100644 --- a/zh-cn/application-dev/application-models/start-serviceability.md +++ b/zh-cn/application-dev/application-models/start-serviceability.md @@ -27,7 +27,7 @@ async function startServiceAbility() { ``` -执行上述代码后,Ability将通过[startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法来启动ServiceAbility。 +执行上述代码后,Ability将通过[`startAbility()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法来启动ServiceAbility。 - 如果ServiceAbility尚未运行,则系统会先调用onStart()来初始化ServiceAbility,再回调Service的onCommand()方法来启动ServiceAbility。 diff --git a/zh-cn/application-dev/application-models/subscribe-system-environment-variable-changes.md b/zh-cn/application-dev/application-models/subscribe-system-environment-variable-changes.md index 5085794970..3c0e693453 100644 --- a/zh-cn/application-dev/application-models/subscribe-system-environment-variable-changes.md +++ b/zh-cn/application-dev/application-models/subscribe-system-environment-variable-changes.md @@ -54,7 +54,7 @@ // 页面展示 build() { - // ... + ... } } ``` @@ -77,7 +77,7 @@ // 页面展示 build() { - // ... + ... } } ``` @@ -99,19 +99,19 @@ import AbilityStage from '@ohos.app.ability.AbilityStage'; let systemLanguage: string; // 系统当前语言 export default class MyAbilityStage extends AbilityStage { - onCreate() { - systemLanguage = this.context.config.language; // Module首次加载时,获取系统当前语言 - console.info(`systemLanguage is ${systemLanguage} `); - } + onCreate() { + systemLanguage = this.context.config.language; // Module首次加载时,获取系统当前语言 + console.info(`systemLanguage is ${systemLanguage} `); + } - onConfigurationUpdate(newConfig) { - console.info(`onConfigurationUpdated systemLanguage is ${systemLanguage}, newConfig: ${JSON.stringify(newConfig)}`); + onConfigurationUpdate(newConfig) { + console.info(`onConfigurationUpdated systemLanguage is ${systemLanguage}, newConfig: ${JSON.stringify(newConfig)}`); - if (systemLanguage !== newConfig.language) { - console.info(`systemLanguage from ${systemLanguage} changed to ${newConfig.language}`); - systemLanguage = newConfig.language; // 将变化之后的系统语言保存,作为下一次变化前的系统语言 - } + if (systemLanguage !== newConfig.language) { + console.info(`systemLanguage from ${systemLanguage} changed to ${newConfig.language}`); + systemLanguage = newConfig.language; // 将变化之后的系统语言保存,作为下一次变化前的系统语言 } + } } ``` @@ -131,21 +131,21 @@ import UIAbility from '@ohos.app.ability.UIAbility'; let systemLanguage: string; // 系统当前语言 export default class EntryAbility extends UIAbility { - onCreate(want, launchParam) { - systemLanguage = this.context.config.language; // UIAbility实例首次加载时,获取系统当前语言 - console.info(`systemLanguage is ${systemLanguage} `); - } + onCreate(want, launchParam) { + systemLanguage = this.context.config.language; // UIAbility实例首次加载时,获取系统当前语言 + console.info(`systemLanguage is ${systemLanguage} `); + } - onConfigurationUpdate(newConfig) { - console.info(`onConfigurationUpdated systemLanguage is ${systemLanguage}, newConfig: ${JSON.stringify(newConfig)}`); + onConfigurationUpdate(newConfig) { + console.info(`onConfigurationUpdated systemLanguage is ${systemLanguage}, newConfig: ${JSON.stringify(newConfig)}`); - if (systemLanguage !== newConfig.language) { - console.info(`systemLanguage from ${systemLanguage} changed to ${newConfig.language}`); - systemLanguage = newConfig.language; // 将变化之后的系统语言保存,作为下一次变化前的系统语言 - } + if (systemLanguage !== newConfig.language) { + console.info(`systemLanguage from ${systemLanguage} changed to ${newConfig.language}`); + systemLanguage = newConfig.language; // 将变化之后的系统语言保存,作为下一次变化前的系统语言 } + } - // ... + ... } ``` @@ -163,11 +163,10 @@ ExtensionAbility组件提供了`onConfigurationUpdate()`回调方法用于订阅 import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility'; export default class EntryFormAbility extends FormExtensionAbility { - onConfigurationUpdate(newConfig) { - console.info(`newConfig is ${JSON.stringify(newConfig)}`); - } + onConfigurationUpdate(newConfig) { + console.info(`newConfig is ${JSON.stringify(newConfig)}`); + } - // ... + ... } ``` - 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 b3a1e9060e..84ff19a40b 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 @@ -14,7 +14,7 @@ 在[基类Context](application-context-stage.md)中,提供了EventHub对象,使用EventHub实现UIAbility与UI之间的数据通信需要先获取EventHub对象。本章节将以此为例进行说明。 -1. 在UIAbility中调用[eventHub.on()](../reference/apis/js-apis-inner-application-eventHub.md#eventhubon)方法注册一个自定义事件“event1”,[eventHub.on()](../reference/apis/js-apis-inner-application-eventHub.md#eventhubon)有如下两种调用方式,使用其中一种即可。 +1. 在UIAbility中调用[`eventHub.on()`](../reference/apis/js-apis-inner-application-eventHub.md#eventhubon)方法注册一个自定义事件“event1”,[`eventHub.on()`](../reference/apis/js-apis-inner-application-eventHub.md#eventhubon)有如下两种调用方式,使用其中一种即可。 ```ts import UIAbility from '@ohos.app.ability.UIAbility'; @@ -22,25 +22,25 @@ const TAG: string = '[Example].[Entry].[EntryAbility]'; export default class EntryAbility extends UIAbility { - func1(...data) { - // 触发事件,完成相应的业务操作 - console.info(TAG, '1. ' + JSON.stringify(data)); - } - - onCreate(want, launch) { - // 获取eventHub - let eventhub = this.context.eventHub; - // 执行订阅操作 - eventhub.on('event1', this.func1); - eventhub.on('event1', (...data) => { - // 触发事件,完成相应的业务操作 - console.info(TAG, '2. ' + JSON.stringify(data)); - }); - } + func1(...data) { + // 触发事件,完成相应的业务操作 + console.info(TAG, '1. ' + JSON.stringify(data)); + } + + onCreate(want, launch) { + // 获取eventHub + let eventhub = this.context.eventHub; + // 执行订阅操作 + eventhub.on('event1', this.func1); + eventhub.on('event1', (...data) => { + // 触发事件,完成相应的业务操作 + console.info(TAG, '2. ' + JSON.stringify(data)); + }); + } } ``` -2. 在UI界面中通过[eventHub.emit()](../reference/apis/js-apis-inner-application-eventHub.md#eventhubemit)方法触发该事件,在触发事件的同时,根据需要传入参数信息。 +2. 在UI中通过[eventHub.emit()](../reference/apis/js-apis-inner-application-eventHub.md#eventhubemit)方法触发该事件,在触发事件的同时,根据需要传入参数信息。 ```ts import common from '@ohos.app.ability.common'; @@ -62,7 +62,7 @@ // 页面展示 build() { - // ... + ... } } ``` @@ -89,9 +89,8 @@ globalThis是[ArkTS引擎实例](thread-model-stage.md)内部的一个全局对象,引擎内部的UIAbility/ExtensionAbility/Page都可以使用,因此可以使用globalThis对象进行数据同步。 - **图1** 使用globalThis进行数据同步 - - ![globalThis1](figures/globalThis1.png) +**图1** 使用globalThis进行数据同步 +![globalThis1](figures/globalThis1.png) 如上图所示,下面从如下三个场景和一个注意点来介绍globalThis的使用: @@ -103,38 +102,38 @@ globalThis是[ArkTS引擎实例](thread-model-stage.md)内部的一个全局对 ### UIAbility和Page之间使用globalThis -通过在globalThis对象上绑定属性/方法,可以实现UIAbility组件与UI之间的数据同步。例如在UIAbility组件中绑定want参数,即可在UIAbility对应的UI界面上使用want参数信息。 +通过在globalThis对象上绑定属性/方法,可以实现UIAbility组件与UI之间的数据同步。例如在UIAbility组件中绑定want参数,即可在UIAbility对应的UI上使用want参数信息。 -1. 调用[startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法启动一个UIAbility实例时,被启动的UIAbility创建完成后会进入onCreate()生命周期回调,且在onCreate()生命周期回调中能够接受到传递过来的want参数,可以将want参数绑定到globalThis上。 +1. 调用[`startAbility()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法启动一个UIAbility实例时,被启动的UIAbility创建完成后会进入[`onCreate()`](../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityoncreate)生命周期回调,且在[`onCreate()`](../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityoncreate)生命周期回调中能够接受到传递过来的want参数,可以将want参数绑定到globalThis上。 ```ts import UIAbility from '@ohos.app.ability.UIAbility'; export default class EntryAbility extends UIAbility { - onCreate(want, launch) { - globalThis.entryAbilityWant = want; - // ... - } + onCreate(want, launch) { + globalThis.entryAbilityWant = want; + ... + } - // ... + ... } ``` -2. 在UI界面中即可通过globalThis获取到want参数信息。 +2. 在UI中即可通过globalThis获取到want参数信息。 ```ts let entryAbilityWant; - + @Entry @Component struct Index { aboutToAppear() { entryAbilityWant = globalThis.entryAbilityWant; } - + // 页面展示 build() { - // ... + ... } } ``` @@ -150,10 +149,10 @@ globalThis是[ArkTS引擎实例](thread-model-stage.md)内部的一个全局对 import UIAbility from '@ohos.app.ability.UIAbility' export default class UIAbilityA extends UIAbility { - onCreate(want, launch) { - globalThis.entryAbilityStr = 'UIAbilityA'; // UIAbilityA存放字符串“UIAbilityA”到globalThis - // ... - } + onCreate(want, launch) { + globalThis.entryAbilityStr = 'UIAbilityA'; // UIAbilityA存放字符串“UIAbilityA”到globalThis + ... + } } ``` @@ -161,13 +160,13 @@ globalThis是[ArkTS引擎实例](thread-model-stage.md)内部的一个全局对 ```ts import UIAbility from '@ohos.app.ability.UIAbility' - + export default class UIAbilityB extends UIAbility { - onCreate(want, launch) { - // UIAbilityB从globalThis读取name并输出 - console.info('name from entryAbilityStr: ' + globalThis.entryAbilityStr); - // ... - } + onCreate(want, launch) { + // UIAbilityB从globalThis读取name并输出 + console.info('name from entryAbilityStr: ' + globalThis.entryAbilityStr); + ... + } } ``` @@ -182,11 +181,11 @@ globalThis是[ArkTS引擎实例](thread-model-stage.md)内部的一个全局对 import UIAbility from '@ohos.app.ability.UIAbility' export default class UIAbilityA extends UIAbility { - onCreate(want, launch) { - // UIAbilityA存放字符串“UIAbilityA”到globalThis - globalThis.entryAbilityStr = 'UIAbilityA'; - // ... - } + onCreate(want, launch) { + // UIAbilityA存放字符串“UIAbilityA”到globalThis + globalThis.entryAbilityStr = 'UIAbilityA'; + ... + } } ``` @@ -194,21 +193,20 @@ globalThis是[ArkTS引擎实例](thread-model-stage.md)内部的一个全局对 ```ts import Extension from '@ohos.app.ability.ServiceExtensionAbility' - + export default class ServiceExtAbility extends Extension { - onCreate(want) { - // ServiceExtAbility从globalThis读取name并输出 - console.info('name from entryAbilityStr: ' + globalThis.entryAbilityStr); - // ... - } + onCreate(want) { + // ServiceExtAbility从globalThis读取name并输出 + console.info('name from entryAbilityStr: ' + globalThis.entryAbilityStr); + ... + } } ``` ### globalThis使用的注意事项 - **图2** globalThis注意事项 - +**图2** globalThis注意事项 ![globalThis2](figures/globalThis2.png) - Stage模型下进程内的UIAbility组件共享ArkTS引擎实例,使用globalThis时需要避免存放相同名称的对象。例如UIAbilityA和UIAbilityB可以使用globalThis共享数据,在存放相同名称的对象时,先存放的对象会被后存放的对象覆盖。 @@ -225,10 +223,10 @@ Stage模型上同名对象覆盖导致问题的场景举例说明。 import UIAbility from '@ohos.app.ability.UIAbility' export default class UIAbilityA extends UIAbility { - onCreate(want, launch) { - globalThis.context = this.context; // UIAbilityA存放context到globalThis - // ... - } + onCreate(want, launch) { + globalThis.context = this.context; // UIAbilityA存放context到globalThis + ... + } } ``` @@ -243,7 +241,7 @@ Stage模型上同名对象覆盖导致问题的场景举例说明。 } // 页面展示 build() { - // ... + ... } } ``` @@ -254,11 +252,11 @@ Stage模型上同名对象覆盖导致问题的场景举例说明。 import UIAbility from '@ohos.app.ability.UIAbility' export default class UIAbilityB extends UIAbility { - onCreate(want, launch) { - // UIAbilityB覆盖了UIAbilityA在globalThis中存放的context - globalThis.context = this.context; - // ... - } + onCreate(want, launch) { + // UIAbilityB覆盖了UIAbilityA在globalThis中存放的context + globalThis.context = this.context; + ... + } } ``` @@ -273,7 +271,7 @@ Stage模型上同名对象覆盖导致问题的场景举例说明。 } // 页面展示 build() { - // ... + ... } } ``` @@ -284,10 +282,10 @@ Stage模型上同名对象覆盖导致问题的场景举例说明。 import UIAbility from '@ohos.app.ability.UIAbility' export default class UIAbilityA extends UIAbility { - onCreate(want, launch) { // UIAbilityA从后台进入前台,不会再走这个生命周期 - globalThis.context = this.context; - // ... - } + onCreate(want, launch) { // UIAbilityA从后台进入前台,不会再走这个生命周期 + globalThis.context = this.context; + ... + } } ``` @@ -302,7 +300,7 @@ Stage模型上同名对象覆盖导致问题的场景举例说明。 } // 页面展示 build() { - // ... + ... } } ``` 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 43cd394dc7..1dcd40eac1 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 @@ -4,7 +4,7 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳转时,会涉及到启动特定的UIAbility,该UIAbility可以是应用内的其他UIAbility,也可以是其他应用的UIAbility(例如启动三方支付UIAbility)。 -本章节将从如下场景分别介绍设备内UIAbility间的交互方式。对于跨设备的应用组件交互,请参见[应用组件跨设备交互(流转)](inter-device-interaction-hop-overview.md)。 +本文将从如下场景分别介绍设备内UIAbility间的交互方式。对于跨设备的应用组件交互,请参见[应用组件跨设备交互(流转)](inter-device-interaction-hop-overview.md)。 - [启动应用内的UIAbility](#启动应用内的uiability) @@ -28,91 +28,93 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳 假设应用中有两个UIAbility:EntryAbility和FuncAbility(可以在应用的一个Module中,也可以在的不同Module中),需要从EntryAbility的页面中启动FuncAbility。 -1. 在EntryAbility中,通过调用[startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法启动UIAbility,[want](../reference/apis/js-apis-app-ability-want.md)为UIAbility实例启动的入口参数,其中bundleName为待启动应用的Bundle名称,abilityName为待启动的Ability名称,moduleName在待启动的UIAbility属于不同的Module时添加,parameters为自定义信息参数。示例中的context的获取方式请参见[获取UIAbility的上下文信息](uiability-usage.md#获取uiability的上下文信息)。 +1. 在EntryAbility中,通过调用[`startAbility()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法启动UIAbility,[want](../reference/apis/js-apis-app-ability-want.md)为UIAbility实例启动的入口参数,其中bundleName为待启动应用的Bundle名称,abilityName为待启动的Ability名称,moduleName在待启动的UIAbility属于不同的Module时添加,parameters为自定义信息参数。示例中的context的获取方式请参见[获取UIAbility的上下文信息](uiability-usage.md#获取uiability的上下文信息)。 ```ts let context = ...; // UIAbilityContext - let wantInfo = { + let want = { deviceId: '', // deviceId为空表示本设备 bundleName: 'com.example.myapplication', abilityName: 'FuncAbility', - moduleName: 'module1', // moduleName非必选 + moduleName: 'func', // moduleName非必选 parameters: { // 自定义信息 info: '来自EntryAbility Index页面', }, } // context为调用方UIAbility的UIAbilityContext - context.startAbility(wantInfo).then(() => { - // ... + context.startAbility(want).then(() => { + console.info('Succeeded in starting ability.'); }).catch((err) => { - // ... + console.error(`Failed to start ability. Code is ${err.code}, message is ${err.message}`); }) ``` -2. 在FuncAbility的[onCreate()](../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityoncreate)或者[onNewWant()](../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityonnewwant)生命周期回调文件中接收EntryAbility传递过来的参数。 +2. 在FuncAbility的[`onCreate()`](../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityoncreate)或者[`onNewWant()`](../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityonnewwant)生命周期回调文件中接收EntryAbility传递过来的参数。 ```ts import UIAbility from '@ohos.app.ability.UIAbility'; - import window from '@ohos.window'; export default class FuncAbility extends UIAbility { onCreate(want, launchParam) { // 接收调用方UIAbility传过来的参数 let funcAbilityWant = want; let info = funcAbilityWant?.parameters?.info; - // ... + ... } } ``` - + > **说明:** > > 在被拉起的FuncAbility中,可以通过获取传递过来的`want`参数的`parameters`来获取拉起方UIAbility的PID、Bundle Name等信息。 -3. 在FuncAbility业务完成之后,如需要停止当前UIAbility实例,在FuncAbility中通过调用[terminateSelf()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateself)方法实现。 +3. 在FuncAbility业务完成之后,如需要停止当前UIAbility实例,在FuncAbility中通过调用[`terminateSelf()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateself)方法实现。 ```ts let context = ...; // UIAbilityContext // context为需要停止的UIAbility实例的AbilityContext context.terminateSelf((err) => { - // ... + if (err.code) { + console.error(`Failed to terminate Self. Code is ${err.code}, message is ${err.message}`); + return; + } }); ``` > **说明:** > - > 调用[terminateSelf()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateself)方法停止当前UIAbility实例时,默认会保留该实例的快照(Snapshot),即在最近任务列表中仍然能查看到该实例对应的任务。如不需要保留该实例的快照,可以在其对应UIAbility的[module.json5配置文件](../quick-start/module-configuration-file.md)中,将[abilities标签](../quick-start/module-configuration-file.md#abilities标签)的removeMissionAfterTerminate字段配置为true。 + > 调用[`terminateSelf()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateself)方法停止当前UIAbility实例时,默认会保留该实例的快照(Snapshot),即在最近任务列表中仍然能查看到该实例对应的任务。如不需要保留该实例的快照,可以在其对应UIAbility的[module.json5配置文件](../quick-start/module-configuration-file.md)中,将[abilities标签](../quick-start/module-configuration-file.md#abilities标签)的removeMissionAfterTerminate字段配置为true。 -4. 如需要关闭应用所有的UIAbility实例,可以调用[ApplicationContext](../reference/apis/js-apis-inner-application-applicationContext.md)的[killProcessBySelf()](../reference/apis/js-apis-inner-application-applicationContext.md#applicationcontextkillallprocesses9)方法实现关闭应用所有的进程。 +4. 如需要关闭应用所有的UIAbility实例,可以调用[ApplicationContext](../reference/apis/js-apis-inner-application-applicationContext.md)的[`killProcessBySelf()`](../reference/apis/js-apis-inner-application-applicationContext.md#applicationcontextkillallprocesses9)方法实现关闭应用所有的进程。 ## 启动应用内的UIAbility并获取返回结果 在一个EntryAbility启动另外一个FuncAbility时,希望在被启动的FuncAbility完成相关业务后,能将结果返回给调用方。例如在应用中将入口功能和帐号登录功能分别设计为两个独立的UIAbility,在帐号登录UIAbility中完成登录操作后,需要将登录的结果返回给入口UIAbility。 -1. 在EntryAbility中,调用[startAbilityForResult()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult)接口启动FuncAbility,异步回调中的data用于接收FuncAbility停止自身后返回给EntryAbility的信息。示例中的context的获取方式请参见[获取UIAbility的上下文信息](uiability-usage.md#获取uiability的上下文信息)。 +1. 在EntryAbility中,调用[`startAbilityForResult()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult)接口启动FuncAbility,异步回调中的data用于接收FuncAbility停止自身后返回给EntryAbility的信息。示例中的context的获取方式请参见[获取UIAbility的上下文信息](uiability-usage.md#获取uiability的上下文信息)。 ```ts let context = ...; // UIAbilityContext - let wantInfo = { + let want = { deviceId: '', // deviceId为空表示本设备 bundleName: 'com.example.myapplication', abilityName: 'FuncAbility', - moduleName: 'module1', // moduleName非必选 + moduleName: 'func', // moduleName非必选 parameters: { // 自定义信息 info: '来自EntryAbility Index页面', }, } // context为调用方UIAbility的UIAbilityContext - context.startAbilityForResult(wantInfo).then((data) => { - // ... + context.startAbilityForResult(want).then((data) => { + ... }).catch((err) => { - // ... + console.error(`Failed to start ability for result. Code is ${err.code}, message is ${err.message}`); }) ``` -2. 在FuncAbility停止自身时,需要调用[terminateSelfWithResult()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult)方法,入参abilityResult为FuncAbility需要返回给EntryAbility的信息。 +2. 在FuncAbility停止自身时,需要调用[`terminateSelfWithResult()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult)方法,入参abilityResult为FuncAbility需要返回给EntryAbility的信息。 ```ts let context = ...; // UIAbilityContext @@ -122,7 +124,7 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳 want: { bundleName: 'com.example.myapplication', abilityName: 'FuncAbility', - moduleName: 'module1', + moduleName: 'func', parameters: { info: '来自FuncAbility Index页面', }, @@ -130,27 +132,30 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳 } // context为被调用方UIAbility的AbilityContext context.terminateSelfWithResult(abilityResult, (err) => { - // ... + if (err.code) { + console.error(`Failed to terminate self with result. Code is ${err.code}, message is ${err.message}`); + return; + } }); ``` -3. FuncAbility停止自身后,EntryAbility通过[startAbilityForResult()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult)方法回调接收被FuncAbility返回的信息,RESULT_CODE需要与前面的数值保持一致。 +3. FuncAbility停止自身后,EntryAbility通过[`startAbilityForResult()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult)方法回调接收被FuncAbility返回的信息,RESULT_CODE需要与前面的数值保持一致。 ```ts let context = ...; // UIAbilityContext const RESULT_CODE: number = 1001; - // ... + ... // context为调用方UIAbility的UIAbilityContext - context.startAbilityForResult(wantInfo).then((data) => { + context.startAbilityForResult(want).then((data) => { if (data?.resultCode === RESULT_CODE) { // 解析被调用方UIAbility返回的信息 let info = data.want?.parameters?.info; - // ... + ... } }).catch((err) => { - // ... + console.error(`Failed to start ability for result. Code is ${err.code}, message is ${err.message}`); }) ``` @@ -163,26 +168,26 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳 - 显式Want启动:启动一个确定应用的UIAbility,在want参数中需要设置该应用bundleName和abilityName,当需要拉起某个明确的UIAbility时,通常使用显式Want启动方式。 -- 隐式Want启动:根据匹配条件由用户选择启动哪一个UIAbility,即不明确指出要启动哪一个UIAbility(abilityName参数未设置),在调用[startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法时,其入参want中指定了一系列的entities字段(表示目标UIAbility额外的类别信息,如浏览器、视频播放器)和actions字段(表示要执行的通用操作,如查看、分享、应用详情等)等参数信息,然后由系统去分析want,并帮助找到合适的UIAbility来启动。当需要拉起其他应用的UIAbility时,开发者通常不知道用户设备中应用的安装情况,也无法确定目标应用的bundleName和abilityName,通常使用隐式Want启动方式。 +- 隐式Want启动:根据匹配条件由用户选择启动哪一个UIAbility,即不明确指出要启动哪一个UIAbility(abilityName参数未设置),在调用[`startAbility()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法时,其入参want中指定了一系列的entities字段(表示目标UIAbility额外的类别信息,如浏览器、视频播放器)和actions字段(表示要执行的通用操作,如查看、分享、应用详情等)等参数信息,然后由系统去分析want,并帮助找到合适的UIAbility来启动。当需要拉起其他应用的UIAbility时,开发者通常不知道用户设备中应用的安装情况,也无法确定目标应用的bundleName和abilityName,通常使用隐式Want启动方式。 -本章节主要讲解如何通过隐式Want启动其他应用的UIAbility。 +本文主要讲解如何通过隐式Want启动其他应用的UIAbility。 -1. 将多个待匹配的文档应用安装到设备,在其对应UIAbility的[module.json5配置文件](../quick-start/module-configuration-file.md)中,配置skills的entities字段和actions字段。 +1. 将多个待匹配的文档应用安装到设备,在其对应UIAbility的[module.json5配置文件](../quick-start/module-configuration-file.md)中,配置skills标签的entities字段和actions字段。 ```json { "module": { "abilities": [ { - // ... + ... "skills": [ { "entities": [ - // ... + ... "entity.system.default" ], "actions": [ - // ... + ... "ohos.want.action.viewData" ] } @@ -197,7 +202,7 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳 ```ts let context = ...; // UIAbilityContext - let wantInfo = { + let want = { deviceId: '', // deviceId为空表示本设备 // uncomment line below if wish to implicitly query only in the specific bundle. // bundleName: 'com.example.myapplication', @@ -207,31 +212,34 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳 } // context为调用方UIAbility的UIAbilityContext - context.startAbility(wantInfo).then(() => { - // ... + context.startAbility(want).then(() => { + console.info('Succeeded in starting ability.'); }).catch((err) => { - // ... + console.error(`Failed to start ability. Code is ${err.code}, message is ${err.message}`); }) ``` - 效果示意如下图所示,点击“打开PDF文档”时,会弹出选择框供用户选择。 + 效果示意如下图所示,点击“打开PDF文档”时,会弹出选择框供用户选择。 ![](figures/uiability-intra-device-interaction.png) -3. 在文档应用使用完成之后,如需要停止当前UIAbility实例,通过调用[terminateSelf()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateself)方法实现。 +3. 在文档应用使用完成之后,如需要停止当前UIAbility实例,通过调用[`terminateSelf()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateself)方法实现。 ```ts let context = ...; // UIAbilityContext // context为需要停止的UIAbility实例的AbilityContext context.terminateSelf((err) => { - // ... + if (err.code) { + console.error(`Failed to terminate self. Code is ${err.code}, message is ${err.message}`); + return; + } }); ``` ## 启动其他应用的UIAbility并获取返回结果 -当使用隐式Want启动其他应用的UIAbility并希望获取返回结果时,调用方需要使用[startAbilityForResult()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult)方法启动目标UIAbility。例如主应用中需要启动三方支付并获取支付结果。 +当使用隐式Want启动其他应用的UIAbility并希望获取返回结果时,调用方需要使用[`startAbilityForResult()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult)方法启动目标UIAbility。例如主应用中需要启动三方支付并获取支付结果。 1. 在支付应用对应UIAbility的[module.json5配置文件](../quick-start/module-configuration-file.md)中,配置skills的entities字段和actions字段。 @@ -240,15 +248,15 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳 "module": { "abilities": [ { - // ... + ... "skills": [ { "entities": [ - // ... + ... "entity.system.default" ], "actions": [ - // ... + ... "ohos.want.action.editData" ] } @@ -259,28 +267,28 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳 } ``` -2. 调用方使用[startAbilityForResult()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult)方法启动支付应用的UIAbility,在调用方want参数中的entities和action需要被包含在待匹配UIAbility的skills配置的entities和actions中。异步回调中的data用于后续接收支付UIAbility停止自身后返回给调用方的信息。系统匹配到符合entities和actions参数条件的UIAbility后,会弹出选择框展示匹配到的UIAbility实例列表供用户选择使用。 +2. 调用方使用[`startAbilityForResult()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult)方法启动支付应用的UIAbility,在调用方want参数中的entities和action需要被包含在待匹配UIAbility的skills标签配置的entities和actions中。异步回调中的data用于后续接收支付UIAbility停止自身后返回给调用方的信息。系统匹配到符合entities和actions参数条件的UIAbility后,会弹出选择框展示匹配到的UIAbility实例列表供用户选择使用。 ```ts let context = ...; // UIAbilityContext - let wantInfo = { + let want = { deviceId: '', // deviceId为空表示本设备 // uncomment line below if wish to implicitly query only in the specific bundle. // bundleName: 'com.example.myapplication', action: 'ohos.want.action.editData', // entities can be omitted. - entities: ['entity.system.default'], + entities: ['entity.system.default'] } // context为调用方UIAbility的UIAbilityContext - context.startAbilityForResult(wantInfo).then((data) => { - // ... + context.startAbilityForResult(want).then((data) => { + ... }).catch((err) => { - // ... + console.error(`Failed to start ability for result. Code is ${err.code}, message is ${err.message}`); }) ``` -3. 在支付UIAbility完成支付之后,需要调用[terminateSelfWithResult()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult)方法实现停止自身,并将abilityResult参数信息返回给调用方。 +3. 在支付UIAbility完成支付之后,需要调用[`terminateSelfWithResult()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult)方法实现停止自身,并将abilityResult参数信息返回给调用方。 ```ts let context = ...; // UIAbilityContext @@ -298,11 +306,14 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳 } // context为被调用方UIAbility的AbilityContext context.terminateSelfWithResult(abilityResult, (err) => { - // ... + if (err.code) { + console.error(`Failed to terminate self with result. Code is ${err.code}, message is ${err.message}`); + return; + } }); ``` -4. 在调用方[startAbilityForResult()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult)方法回调中接收支付应用返回的信息,RESULT_CODE需要与前面[terminateSelfWithResult()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult)返回的数值保持一致。 +4. 在调用方[`startAbilityForResult()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult)方法回调中接收支付应用返回的信息,RESULT_CODE需要与前面[`terminateSelfWithResult()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult)返回的数值保持一致。 ```ts let context = ...; // UIAbilityContext @@ -317,10 +328,10 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳 if (data?.resultCode === RESULT_CODE) { // 解析被调用方UIAbility返回的信息 let payResult = data.want?.parameters?.payResult; - // ... + ... } }).catch((err) => { - // ... + console.error(`Failed to start ability for result. Code is ${err.code}, message is ${err.message}`); }) ``` @@ -334,16 +345,16 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳 分屏模式允许用户在同一屏幕上同时运行两个应用程序,其中一个应用程序占据屏幕左侧/上侧的一部分,另一个应用程序占据右侧/下侧的一部分。分屏模式主要用于提高用户的多任务处理效率。 -使用[startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法启动UIAbility时,可以通过在入参中增加[StartOptions](../reference/apis/js-apis-app-ability-startOptions.md)参数的windowMode属性来配置启动UIAbility的窗口模式。 +使用[`startAbility()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法启动UIAbility时,可以通过在入参中增加[StartOptions](../reference/apis/js-apis-app-ability-startOptions.md)参数的windowMode属性来配置启动UIAbility的窗口模式。 > **说明:** > -> 1. 如果在使用[startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法启动UIAbility时,入参中未指定[StartOptions](../reference/apis/js-apis-app-ability-startOptions.md)参数的windowMode属性,那么UIAbility将以系统默认的窗口展示形态启动。 +> 1. 如果在使用[`startAbility()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法启动UIAbility时,入参中未指定[StartOptions](../reference/apis/js-apis-app-ability-startOptions.md)参数的windowMode属性,那么UIAbility将以系统默认的窗口展示形态启动。 > 2. 为了确保启动的UIAbility展示形态能够被支持,需要在该UIAbility对应的[module.json5配置文件](../quick-start/module-configuration-file.md)中[abilities标签](../quick-start/module-configuration-file.md#abilities标签)的supportWindowMode字段确认启动的展示形态被支持。 以下是具体的操作步骤,以悬浮窗模式为例,假设需要从EntryAbility的页面中启动FuncAbility: -1. 在调用[startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法时,增加[StartOptions](../reference/apis/js-apis-app-ability-startOptions.md)参数。 +1. 在调用[`startAbility()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法时,增加[StartOptions](../reference/apis/js-apis-app-ability-startOptions.md)参数。 2. 在[StartOptions](../reference/apis/js-apis-app-ability-startOptions.md)参数中设置`windowMode`字段为`WINDOW_MODE_FLOATING`,表示启动的UIAbility将以悬浮窗的形式展示。 示例中的context的获取方式请参见[获取UIAbility的上下文信息](uiability-usage.md#获取uiability的上下文信息)。 @@ -352,27 +363,27 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳 import AbilityConstant from '@ohos.app.ability.AbilityConstant'; let context = ...; // UIAbilityContext -let wantInfo = { +let want = { deviceId: '', // deviceId为空表示本设备 bundleName: 'com.example.myapplication', abilityName: 'FuncAbility', - moduleName: 'module1', // moduleName非必选 + moduleName: 'func', // moduleName非必选 parameters: { // 自定义信息 info: '来自EntryAbility Index页面', }, } let options = { windowMode: AbilityConstant.WindowMode.WINDOW_MODE_FLOATING -} +}; // context为调用方UIAbility的UIAbilityContext -context.startAbility(wantInfo, options).then(() => { - // ... +context.startAbility(want, options).then(() => { + console.info('Succeeded in starting ability.'); }).catch((err) => { - // ... + console.error(`Failed to start ability. Code is ${err.code}, message is ${err.message}`); }) ``` -效果示意如下图所示。 +效果示意如下图所示。 ![](figures/start-uiability-floating-window.png) ## 启动UIAbility的指定页面 @@ -387,27 +398,27 @@ context.startAbility(wantInfo, options).then(() => { ```ts let context = ...; // UIAbilityContext -let wantInfo = { +let want = { deviceId: '', // deviceId为空表示本设备 bundleName: 'com.example.myapplication', abilityName: 'FuncAbility', - moduleName: 'module1', // moduleName非必选 + moduleName: 'func', // moduleName非必选 parameters: { // 自定义参数传递页面信息 router: 'funcA', }, } // context为调用方UIAbility的UIAbilityContext -context.startAbility(wantInfo).then(() => { - // ... +context.startAbility(want).then(() => { + console.info('Succeeded in starting ability.'); }).catch((err) => { - // ... + console.error(`Failed to start ability. Code is ${err.code}, message is ${err.message}`); }) ``` ### 目标UIAbility首次启动 -目标UIAbility首次启动时,在目标UIAbility的onWindowStageCreate()生命周期回调中,解析EntryAbility传递过来的want参数,获取到需要加载的页面信息url,传入windowStage.loadContent()方法。 +目标UIAbility首次启动时,在目标UIAbility的`onWindowStageCreate()`生命周期回调中,解析EntryAbility传递过来的want参数,获取到需要加载的页面信息url,传入`windowStage.loadContent()`方法。 ```ts @@ -431,7 +442,7 @@ export default class FuncAbility extends UIAbility { } } windowStage.loadContent(url, (err, data) => { - // ... + ... }); } } @@ -446,7 +457,7 @@ export default class FuncAbility extends UIAbility { 针对以上场景,即当应用A的UIAbility实例已创建,并且处于该UIAbility实例对应的主页面中,此时,从应用B中需要再次启动应用A的该UIAbility,并且需要跳转到不同的页面,这种情况下要如何实现呢? -1. 在目标UIAbility中,默认加载的是Index页面。由于当前UIAbility实例之前已经创建完成,此时会进入UIAbility的onNewWant()回调中且不会进入onCreate()和onWindowStageCreate()生命周期回调,在onNewWant()回调中解析调用方传递过来的want参数,并挂在到全局变量globalThis中,以便于后续在页面中获取。 +1. 在目标UIAbility中,默认加载的是Index页面。由于当前UIAbility实例之前已经创建完成,此时会进入UIAbility的`onNewWant()`回调中且不会进入`onCreate()`和`onWindowStageCreate()`生命周期回调,在onNewWant()回调中解析调用方传递过来的want参数,并挂在到全局变量globalThis中,以便于后续在页面中获取。 ```ts import UIAbility from '@ohos.app.ability.UIAbility' @@ -455,12 +466,12 @@ export default class FuncAbility extends UIAbility { onNewWant(want, launchParam) { // 接收调用方UIAbility传过来的参数 globalThis.funcAbilityWant = want; - // ... + ... } } ``` -2. 在FuncAbility中,此时需要在Index页面中通过页面路由Router模块实现指定页面的跳转,由于此时FuncAbility对应的Index页面是处于激活状态,不会重新变量声明以及进入aboutToAppear()生命周期回调中。因此可以在Index页面的onPageShow()生命周期回调中实现页面路由跳转的功能。 +2. 在FuncAbility中,此时需要在Index页面中通过页面路由Router模块实现指定页面的跳转,由于此时FuncAbility对应的Index页面是处于激活状态,不会重新变量声明以及进入`aboutToAppear()`生命周期回调中。因此可以在Index页面的`onPageShow()`生命周期回调中实现页面路由跳转的功能。 ```ts import router from '@ohos.router'; @@ -480,7 +491,7 @@ export default class FuncAbility extends UIAbility { // 页面展示 build() { - // ... + ... } } ``` @@ -493,11 +504,11 @@ export default class FuncAbility extends UIAbility { Call调用是UIAbility能力的扩展,它为UIAbility提供一种能够被外部调用并与外部进行通信的能力。Call调用支持前台与后台两种启动方式,使UIAbility既能被拉起到前台展示UI,也可以在后台被创建并运行。Call调用在调用方与被调用方间建立了IPC通信,因此应用开发者可通过Call调用实现不同UIAbility之间的数据共享。 -Call调用的核心接口是startAbilityByCall方法,与startAbility接口的不同之处在于: +Call调用的核心接口是`startAbilityByCall()`方法,与`startAbility()`接口的不同之处在于: -- startAbilityByCall支持前台与后台两种启动方式,而startAbility仅支持前台启动。 +- startAbilityByCall支持前台与后台两种启动方式,而`startAbility()`仅支持前台启动。 -- 调用方可使用startAbilityByCall所返回的Caller对象与被调用方进行通信,而startAbilty不具备通信能力。 +- 调用方可使用`startAbilityByCall()`所返回的Caller对象与被调用方进行通信,而`startAbilty()`不具备通信能力。 Call调用的使用场景主要包括: @@ -505,7 +516,8 @@ Call调用的使用场景主要包括: - 希望被启动的UIAbility在后台运行。 - **表1** Call调用相关名词解释 + +**表1** Call调用相关名词解释 | 名词 | 描述 | | -------- | -------- | @@ -516,9 +528,8 @@ Call调用的使用场景主要包括: Call调用示意图如下所示。 - **图1** Call调用示意图 - - ![call](figures/call.png) +**图1** Call调用示意图 +![call](figures/call.png) - CallerAbility调用startAbilityByCall接口获取Caller,并使用Caller对象的call方法向CalleeAbility发送数据。 @@ -536,7 +547,7 @@ Call调用示意图如下所示。 Call功能主要接口如下表所示。具体的API详见[接口文档](../reference/apis/js-apis-app-ability-uiAbility.md#caller)。 - **表2** Call功能主要接口 +**表2** Call功能主要接口 | 接口名 | 描述 | | -------- | -------- | @@ -586,7 +597,7 @@ Call功能主要接口如下表所示。具体的API详见[接口文档](../refe marshalling(messageSequence) { messageSequence.writeInt(this.num); messageSequence.writeString(this.str); - return true + return true; } unmarshalling(messageSequence) { @@ -598,8 +609,9 @@ Call功能主要接口如下表所示。具体的API详见[接口文档](../refe ``` 4. 实现Callee.on监听及Callee.off解除监听。 + 被调用端Callee的监听函数注册时机,取决于应用开发者。注册监听之前的数据不会被处理,取消监听之后的数据不会被处理。如下示例在UIAbility的onCreate注册'MSG_SEND_METHOD'监听,在onDestroy取消监听,收到序列化数据后作相应处理并返回,应用开发者根据实际需要做相应处理。具体示例代码如下: - + ```ts const TAG: string = '[CalleeAbility]'; @@ -622,16 +634,16 @@ Call功能主要接口如下表所示。具体的API详见[接口文档](../refe onCreate(want, launchParam) { try { this.callee.on(MSG_SEND_METHOD, sendMsgCallback); - } catch (error) { - console.info(`${MSG_SEND_METHOD} register failed with error ${JSON.stringify(error)}`); + } catch (err) { + console.error(`Failed to register. Code is ${err.code}, message is ${err.message}`); } } onDestroy() { try { this.callee.off(MSG_SEND_METHOD); - } catch (error) { - console.error(TAG, `${MSG_SEND_METHOD} unregister failed with error ${JSON.stringify(error)}`); + } catch (err) { + console.error(`Failed to unregister. Code is ${err.code}, message is ${err.message}`); } } } @@ -657,9 +669,9 @@ Call功能主要接口如下表所示。具体的API详见[接口文档](../refe caller.on('release', (msg) => { console.info(`caller onRelease is called ${msg}`); }) - console.info('caller register OnRelease succeed'); - } catch (error) { - console.info(`caller register OnRelease failed with ${error}`); + console.info('Succeeded in registering on release.'); + } catch (err) { + console.err(`Failed to caller register on release. Code is ${err.code}, message is ${err.message}`); } } @@ -668,15 +680,15 @@ Call功能主要接口如下表所示。具体的API详见[接口文档](../refe this.caller = await context.startAbilityByCall({ bundleName: 'com.samples.CallApplication', abilityName: 'CalleeAbility' - }) + }); if (this.caller === undefined) { console.info('get caller failed') - return + return; } console.info('get caller success') this.regOnRelease(this.caller) - } catch (error) { - console.info(`get caller failed with ${error}`) + } (err) { + console.err(`Failed to get caller. Code is ${err.code}, message is ${err.message}`); } } ``` 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 f806a642db..263dc70696 100644 --- a/zh-cn/application-dev/application-models/uiability-launch-type.md +++ b/zh-cn/application-dev/application-models/uiability-launch-type.md @@ -15,12 +15,12 @@ UIAbility的启动模式是指UIAbility实例在启动时的不同呈现状态 singleton启动模式为单实例模式,也是默认情况下的启动模式。 -每次调用[startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法时,如果应用进程中该类型的UIAbility实例已经存在,则复用系统中的UIAbility实例。系统中只存在唯一一个该UIAbility实例,即在最近任务列表中只存在一个该类型的UIAbility实例。 +每次调用[`startAbility()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法时,如果应用进程中该类型的UIAbility实例已经存在,则复用系统中的UIAbility实例。系统中只存在唯一一个该UIAbility实例,即在最近任务列表中只存在一个该类型的UIAbility实例。 **图1** 单实例模式演示效果 ![uiability-launch-type1](figures/uiability-launch-type1.gif) -> **说明**:应用的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)生命周期回调。 +> **说明**:应用的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)生命周期回调。 如果需要使用singleton启动模式,在[module.json5配置文件](../quick-start/module-configuration-file.md)中的`launchType`字段配置为`singleton`即可。 @@ -28,11 +28,11 @@ singleton启动模式为单实例模式,也是默认情况下的启动模式 ```json { "module": { - // ... + ... "abilities": [ { "launchType": "singleton", - // ... + ... } ] } @@ -42,7 +42,7 @@ singleton启动模式为单实例模式,也是默认情况下的启动模式 ## multiton启动模式 -multiton启动模式为多实例模式,每次调用[startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法时,都会在应用进程中创建一个新的该类型UIAbility实例。即在最近任务列表中可以看到有多个该类型的UIAbility实例。这种情况下可以将UIAbility配置为multiton(多实例模式)。 +multiton启动模式为多实例模式,每次调用[`startAbility()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法时,都会在应用进程中创建一个新的该类型UIAbility实例。即在最近任务列表中可以看到有多个该类型的UIAbility实例。这种情况下可以将UIAbility配置为multiton(多实例模式)。 **图2** 多实例模式演示效果 ![uiability-launch-type2](figures/uiability-launch-type2.gif) @@ -53,11 +53,11 @@ multiton启动模式的开发使用,在[module.json5配置文件](../quick-sta ```json { "module": { - // ... + ... "abilities": [ { "launchType": "multiton", - // ... + ... } ] } @@ -79,67 +79,68 @@ specified启动模式为指定实例模式,针对一些特殊场景使用( ```json { "module": { - // ... + ... "abilities": [ { "launchType": "specified", - // ... + ... } ] } } ``` -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实例。 +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标识 function getInstance() { - // ... + ... } + let context = ...; // context为调用方UIAbility的UIAbilityContext let want = { - deviceId: '', // deviceId为空表示本设备 - bundleName: 'com.example.myapplication', - abilityName: 'SpecifiedAbility', - moduleName: 'module1', // moduleName非必选 - parameters: { // 自定义信息 - instanceKey: getInstance(), - }, + deviceId: '', // deviceId为空表示本设备 + bundleName: 'com.example.myapplication', + abilityName: 'SpecifiedAbility', + moduleName: 'specified', // moduleName非必选 + parameters: { // 自定义信息 + instanceKey: getInstance(), + }, } - // context为调用方UIAbility的UIAbilityContext - this.context.startAbility(want).then(() => { - // ... + + context.startAbility(want).then(() => { + console.info('Succeeded in starting ability.'); }).catch((err) => { - // ... + console.error(`Failed to start ability. Code is ${err.code}, message is ${err.message}`); }) ``` -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)回调函数。 +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实例并启动。 + 示例代码中,通过实现[`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的SpecifiedAbility - if (want.abilityName === 'SpecifiedAbility') { - // 返回的字符串Key标识为自定义拼接的字符串内容 - return `SpecifiedAbilityInstance_${want.parameters.instanceKey}`; - } - - return ''; + onAcceptWant(want): string { + // 在被调用方的AbilityStage中,针对启动模式为specified的UIAbility返回一个UIAbility实例对应的一个Key值 + // 当前示例指的是module1 Module的SpecifiedAbility + if (want.abilityName === 'SpecifiedAbility') { + // 返回的字符串Key标识为自定义拼接的字符串内容 + return `SpecifiedAbilityInstance_${want.parameters.instanceKey}`; } + + return ''; + } } ``` > **说明:** > - > 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)生命周期回调。 + > 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)。 例如在文档应用中,可以为不同的文档实例内容绑定不同的Key值。每次新建文档时,可以传入一个新的Key值(例如可以将文件的路径作为一个Key标识),此时AbilityStage中启动UIAbility时都会创建一个新的UIAbility实例;当新建的文档保存之后,回到桌面,或者新打开一个已保存的文档,回到桌面,此时再次打开该已保存的文档,此时AbilityStage中再次启动该UIAbility时,打开的仍然是之前原来已保存的文档界面。 diff --git a/zh-cn/application-dev/application-models/uiability-lifecycle.md b/zh-cn/application-dev/application-models/uiability-lifecycle.md index e415d3ee3b..2d82b143c2 100644 --- a/zh-cn/application-dev/application-models/uiability-lifecycle.md +++ b/zh-cn/application-dev/application-models/uiability-lifecycle.md @@ -7,9 +7,8 @@ UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态,如下图所示。 - **图1** UIAbility生命周期状态 - - ![Ability-Life-Cycle](figures/Ability-Life-Cycle.png) +**图1** UIAbility生命周期状态 +![Ability-Life-Cycle](figures/Ability-Life-Cycle.png) ## 生命周期状态说明 @@ -17,18 +16,17 @@ UIAbility的生命周期包括Create、Foreground、Background、Destroy四个 ### Create状态 -Create状态为在应用加载过程中,UIAbility实例创建完成时触发,系统会调用onCreate()回调。可以在该回调中进行应用初始化操作,例如变量定义资源加载等,用于后续的UI界面展示。 +Create状态为在应用加载过程中,UIAbility实例创建完成时触发,系统会调用`onCreate()`回调。可以在该回调中进行应用初始化操作,例如变量定义资源加载等,用于后续的UI展示。 ```ts import UIAbility from '@ohos.app.ability.UIAbility'; -import window from '@ohos.window'; export default class EntryAbility extends UIAbility { - onCreate(want, launchParam) { - // 应用初始化 - } - // ... + onCreate(want, launchParam) { + // 应用初始化 + } + ... } ``` @@ -36,60 +34,60 @@ export default class EntryAbility extends UIAbility { ### WindowStageCreate和WindowStageDestory状态 -UIAbility实例创建完成之后,在进入Foreground之前,系统会创建一个WindowStage。WindowStage创建完成后会进入onWindowStageCreate()回调,可以在该回调中设置UI界面加载、设置WindowStage的事件订阅。 - - **图2** WindowStageCreate和WindowStageDestory状态 +UIAbility实例创建完成之后,在进入Foreground之前,系统会创建一个WindowStage。WindowStage创建完成后会进入`onWindowStageCreate()`回调,可以在该回调中设置UI加载、设置WindowStage的事件订阅。 - ![Ability-Life-Cycle-WindowStage](figures/Ability-Life-Cycle-WindowStage.png) +**图2** WindowStageCreate和WindowStageDestory状态 +![Ability-Life-Cycle-WindowStage](figures/Ability-Life-Cycle-WindowStage.png) -在onWindowStageCreate()回调中通过[loadContent()](../reference/apis/js-apis-window.md#loadcontent9-2)方法设置应用要加载的页面,并根据需要调用[on('windowStageEvent')](../reference/apis/js-apis-window.md#onwindowstageevent9)方法订阅WindowStage的[事件](../reference/apis/js-apis-window.md#windowstageeventtype9)(获焦/失焦、可见/不可见)。 +在onWindowStageCreate()回调中通过[`loadContent()`](../reference/apis/js-apis-window.md#loadcontent9-2)方法设置应用要加载的页面,并根据需要调用[`on('windowStageEvent')`](../reference/apis/js-apis-window.md#onwindowstageevent9)方法订阅WindowStage的[事件](../reference/apis/js-apis-window.md#windowstageeventtype9)(获焦/失焦、可见/不可见)。 ```ts import UIAbility from '@ohos.app.ability.UIAbility'; import window from '@ohos.window'; export default class EntryAbility extends UIAbility { - // ... - - onWindowStageCreate(windowStage: window.WindowStage) { - // 设置WindowStage的事件订阅(获焦/失焦、可见/不可见) - try { - windowStage.on('windowStageEvent', (data) => { - let stageEventType: window.WindowStageEventType = data; - switch (stageEventType) { - case window.WindowStageEventType.SHOWN: // 切到前台 - console.info('windowStage foreground.'); - break; - case window.WindowStageEventType.ACTIVE: // 获焦状态 - console.info('windowStage active.'); - break; - case window.WindowStageEventType.INACTIVE: // 失焦状态 - console.info('windowStage inactive.'); - break; - case window.WindowStageEventType.HIDDEN: // 切到后台 - console.info('windowStage background.'); - break; - default: - break; - } - }); - } catch (exception) { - console.error('Failed to enable the listener for window stage event changes. Cause:' + - JSON.stringify(exception)); + ... + + onWindowStageCreate(windowStage: window.WindowStage) { + // 设置WindowStage的事件订阅(获焦/失焦、可见/不可见) + try { + windowStage.on('windowStageEvent', (data) => { + let stageEventType: window.WindowStageEventType = data; + switch (stageEventType) { + case window.WindowStageEventType.SHOWN: // 切到前台 + console.info('windowStage foreground.'); + break; + case window.WindowStageEventType.ACTIVE: // 获焦状态 + console.info('windowStage active.'); + break; + case window.WindowStageEventType.INACTIVE: // 失焦状态 + console.info('windowStage inactive.'); + break; + case window.WindowStageEventType.HIDDEN: // 切到后台 + console.info('windowStage background.'); + break; + default: + break; } - - // 设置UI界面加载 - windowStage.loadContent('pages/Index', (err, data) => { - // ... - }); + }); + } catch (exception) { + console.error('Failed to enable the listener for window stage event changes. Cause:' + + JSON.stringify(exception)); } + + // 设置UI加载 + windowStage.loadContent('pages/Index', (err, data) => { + ... + }); + } } ``` > **说明:** +> > WindowStage的相关使用请参见[窗口开发指导](../windowmanager/application-window-stage.md)。 -对应于onWindowStageCreate()回调。在UIAbility实例销毁之前,则会先进入onWindowStageDestroy()回调,可以在该回调中释放UI界面资源。例如在onWindowStageDestroy()中注销获焦/失焦等WindowStage事件。 +对应于`onWindowStageCreate()`回调。在UIAbility实例销毁之前,则会先进入`onWindowStageDestroy()`回调,可以在该回调中释放UI资源。例如在`onWindowStageDestroy()`中注销获焦/失焦等WindowStage事件。 ```ts @@ -97,57 +95,54 @@ import UIAbility from '@ohos.app.ability.UIAbility'; import window from '@ohos.window'; export default class EntryAbility extends UIAbility { - windowStage: window.WindowStage; - - // ... - - onWindowStageCreate(windowStage: window.WindowStage) { - this.windowStage = windowStage; - - // ... - } - - onWindowStageDestroy() { - // 释放UI界面资源 - // 例如在onWindowStageDestroy()中注销获焦/失焦等WindowStage事件 - try { - this.windowStage.off('windowStageEvent'); - } catch (exception) { - console.error('Failed to disable the listener for window stage event changes. Cause:' + - JSON.stringify(exception)); - }; - } + windowStage: window.WindowStage; + ... + + onWindowStageCreate(windowStage: window.WindowStage) { + this.windowStage = windowStage; + ... + } + + onWindowStageDestroy() { + // 释放UI资源 + // 例如在onWindowStageDestroy()中注销获焦/失焦等WindowStage事件 + try { + this.windowStage.off('windowStageEvent'); + } catch (err) { + console.error(`Failed to disable the listener for window stage event changes. Code is ${err.code}, message is ${err.message}`); + }; + } } ``` ### Foreground和Background状态 -Foreground和Background状态分别在UIAbility实例切换至前台和切换至后台时触发,对应于onForeground()回调和onBackground()回调。 +Foreground和Background状态分别在UIAbility实例切换至前台和切换至后台时触发,对应于`onForeground()`回调和`onBackground()`回调。 -onForeground()回调,在UIAbility的UI界面可见之前,如UIAbility切换至前台时触发。可以在onForeground()回调中申请系统需要的资源,或者重新申请在onBackground()中释放的资源。 +`onForeground()`回调,在UIAbility的UI可见之前,如UIAbility切换至前台时触发。可以在`onForeground()`回调中申请系统需要的资源,或者重新申请在`onBackground()`中释放的资源。 -onBackground()回调,在UIAbility的UI界面完全不可见之后,如UIAbility切换至后台时候触发。可以在onBackground()回调中释放UI界面不可见时无用的资源,或者在此回调中执行较为耗时的操作,例如状态保存等。 +`onBackground()`回调,在UIAbility的UI完全不可见之后,如UIAbility切换至后台时候触发。可以在`onBackground()`回调中释放UI不可见时无用的资源,或者在此回调中执行较为耗时的操作,例如状态保存等。 -例如应用在使用过程中需要使用用户定位时,假设应用已获得用户的定位权限授权。在UI界面显示之前,可以在onForeground()回调中开启定位功能,从而获取到当前的位置信息。 +例如应用在使用过程中需要使用用户定位时,假设应用已获得用户的定位权限授权。在UI显示之前,可以在`onForeground()`回调中开启定位功能,从而获取到当前的位置信息。 -当应用切换到后台状态,可以在onBackground()回调中停止定位功能,以节省系统的资源消耗。 +当应用切换到后台状态,可以在`onBackground()`回调中停止定位功能,以节省系统的资源消耗。 ```ts import UIAbility from '@ohos.app.ability.UIAbility'; export default class EntryAbility extends UIAbility { - // ... + ... - onForeground() { - // 申请系统需要的资源,或者重新申请在onBackground中释放的资源 - } + onForeground() { + // 申请系统需要的资源,或者重新申请在onBackground()中释放的资源 + } - onBackground() { - // 释放UI界面不可见时无用的资源,或者在此回调中执行较为耗时的操作 - // 例如状态保存等 - } + onBackground() { + // 释放UI不可见时无用的资源,或者在此回调中执行较为耗时的操作 + // 例如状态保存等 + } } ``` @@ -156,17 +151,16 @@ export default class EntryAbility extends UIAbility { Destroy状态在UIAbility实例销毁时触发。可以在onDestroy()回调中进行系统资源的释放、数据的保存等操作。 -例如调用terminateSelf()方法停止当前UIAbility实例,从而完成UIAbility实例的销毁;或者用户使用最近任务列表关闭该UIAbility实例,完成UIAbility的销毁。 +例如调用`terminateSelf()`方法停止当前UIAbility实例,从而完成UIAbility实例的销毁;或者用户使用最近任务列表关闭该UIAbility实例,完成UIAbility的销毁。 ```ts import UIAbility from '@ohos.app.ability.UIAbility'; -import window from '@ohos.window'; export default class EntryAbility extends UIAbility { - // ... + ... - onDestroy() { - // 系统资源的释放、数据的保存等 - } + onDestroy() { + // 系统资源的释放、数据的保存等 + } } ``` diff --git a/zh-cn/application-dev/application-models/uiability-overview.md b/zh-cn/application-dev/application-models/uiability-overview.md index 176f3669b9..5b0ee39411 100644 --- a/zh-cn/application-dev/application-models/uiability-overview.md +++ b/zh-cn/application-dev/application-models/uiability-overview.md @@ -3,22 +3,23 @@ ## 概述 -UIAbility组件是一种包含UI界面的应用组件,主要用于和用户交互。 +UIAbility组件是一种包含UI的应用组件,主要用于和用户交互。 UIAbility的设计理念: -1. 原生支持应用组件级的[跨端迁移](hop-cross-device-migration.md)和[多端协同](hop-multi-device-collaboration.md) +1. 原生支持应用组件级的[跨端迁移](hop-cross-device-migration.md)和[多端协同](hop-multi-device-collaboration.md)。 -2. 支持多设备和多窗口形态 +2. 支持多设备和多窗口形态。 -关于UIAbility的设计理念,请详细参考[Stage模型的设计理念。](application-model-description.md) +关于UIAbility的设计理念,请详细参考[Stage模型的设计理念](application-model-description.md)。 UIAbility划分原则与建议: + UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口。一个应用可以包含一个或多个UIAbility组件。例如,在支付应用中,可以将入口功能和收付款功能分别配置为独立的UIAbility。 每一个UIAbility组件实例都会在最近任务列表中显示一个对应的任务。 -对于开发者而言,可以根据具体场景选择单个还是多个UIAbility,划分建议如下: +对于开发者而言,可以根据具体场景选择单个还是多个UIAbility,划分建议如下: - 如果开发者希望在任务视图中看到一个任务,则建议使用一个UIAbility,多个页面的方式。 @@ -32,7 +33,7 @@ UIAbility组件是系统调度的基本单元,为应用提供绘制界面的 ```json { "module": { - // ... + ... "abilities": [ { "name": "EntryAbility", // UIAbility组件的名称 @@ -42,7 +43,7 @@ UIAbility组件是系统调度的基本单元,为应用提供绘制界面的 "label": "$string:EntryAbility_label", // UIAbility组件的标签 "startWindowIcon": "$media:icon", // UIAbility组件启动页面图标资源文件的索引 "startWindowBackground": "$color:start_window_background", // UIAbility组件启动页面背景颜色资源文件的索引 - // ... + ... } ] } diff --git a/zh-cn/application-dev/application-models/uiability-usage.md b/zh-cn/application-dev/application-models/uiability-usage.md index bba749a3a0..190355ad36 100644 --- a/zh-cn/application-dev/application-models/uiability-usage.md +++ b/zh-cn/application-dev/application-models/uiability-usage.md @@ -6,7 +6,7 @@ UIAbility组件的基本用法包括:指定UIAbility的启动页面以及获 ## 指定UIAbility的启动页面 -应用中的UIAbility在启动过程中,需要指定启动页面,否则应用启动后会因为没有默认加载页面而导致白屏。可以在UIAbility的onWindowStageCreate()生命周期回调中,通过[WindowStage](../reference/apis/js-apis-window.md#windowstage9)对象的loadContent()方法设置启动页面。 +应用中的UIAbility在启动过程中,需要指定启动页面,否则应用启动后会因为没有默认加载页面而导致白屏。可以在UIAbility的`onWindowStageCreate()`生命周期回调中,通过[WindowStage](../reference/apis/js-apis-window.md#windowstage9)对象的`loadContent()`方法设置启动页面。 ```ts @@ -14,14 +14,14 @@ import UIAbility from '@ohos.app.ability.UIAbility'; import window from '@ohos.window'; export default class EntryAbility extends UIAbility { - onWindowStageCreate(windowStage: window.WindowStage) { - // Main window is created, set main page for this ability - windowStage.loadContent('pages/Index', (err, data) => { - // ... - }); - } + onWindowStageCreate(windowStage: window.WindowStage) { + // Main window is created, set main page for this ability + windowStage.loadContent('pages/Index', (err, data) => { + ... + }); + } - // ... + ... } ``` @@ -31,23 +31,22 @@ export default class EntryAbility extends UIAbility { ## 获取UIAbility的上下文信息 -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()等)。 +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()`等)。 -- 在UIAbility中可以通过this.context获取UIAbility实例的上下文信息。 +- 在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; - - // ... - } + onCreate(want, launchParam) { + // 获取UIAbility实例的上下文 + let context = this.context; + ... + } } ``` - + - 在页面中获取UIAbility实例的上下文信息,包括导入依赖资源context模块和在组件中定义一个context变量两个部分。 ```ts @@ -67,7 +66,7 @@ UIAbility类拥有自身的上下文信息,该信息为[UIAbilityContext](../r // 页面展示 build() { - // ... + ... } } ``` @@ -92,7 +91,7 @@ UIAbility类拥有自身的上下文信息,该信息为[UIAbilityContext](../r // 页面展示 build() { - // ... + ... } } ``` diff --git a/zh-cn/application-dev/application-models/want-overview.md b/zh-cn/application-dev/application-models/want-overview.md index 4a547507c9..aa7fb7e17f 100644 --- a/zh-cn/application-dev/application-models/want-overview.md +++ b/zh-cn/application-dev/application-models/want-overview.md @@ -5,7 +5,7 @@ [Want](../reference/apis/js-apis-app-ability-want.md)是一种对象,用于在应用组件之间传递信息。 -其中,一种常见的使用场景是作为[startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法的参数。例如,当UIAbilityA需要启动UIAbilityB并向UIAbilityB传递一些数据时,可以使用Want作为一个载体,将数据传递给UIAbilityB。 +其中,一种常见的使用场景是作为[`startAbility()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法的参数。例如,当UIAbilityA需要启动UIAbilityB并向UIAbilityB传递一些数据时,可以使用Want作为一个载体,将数据传递给UIAbilityB。 **图1** Want用法示意 ![usage-of-want](figures/usage-of-want.png) @@ -13,38 +13,40 @@ ## Want的类型 -- **显式Want**:在启动Ability时,如果指定了abilityName和bundleName,则称为显式Want。 - 显式Want通常用于在当前应用中启动已知的目标Ability,通过提供目标Ability所在应用的Bundle名称信息(bundleName)并在Want对象内指定abilityName来启动目标Ability。当有明确处理请求的对象时,显式Want是一种简单有效的启动目标Ability的方式。 - +- **显式Want**:在启动目标应用组件时,调用方传入的want参数中指定了abilityName和bundleName,称为显式Want。 + + 显式Want通常用于在当前应用中启动已知的目标应用组件,通过提供目标应用组件所在应用的Bundle名称信息(bundleName)并在Want对象内指定abilityName来启动目标应用组件。当有明确处理请求的对象时,显式Want是一种简单有效的启动目标应用组件的方式。 + ```ts let wantInfo = { - deviceId: '', // deviceId为空表示本设备 - bundleName: 'com.example.myapplication', - abilityName: 'FuncAbility', + deviceId: '', // deviceId为空表示本设备 + bundleName: 'com.example.myapplication', + abilityName: 'FuncAbility', } ``` - -- **隐式Want**:在启动Ability时,如果未指定abilityName,则称为隐式Want。 + +- **隐式Want**:在启动目标应用组件时,调用方传入的want参数中未指定abilityName,称为隐式Want。 + 当需要处理的对象不明确时,可以使用隐式Want,在当前应用中使用其他应用提供的某个能力,而不关心提供该能力的具体应用。隐式Want使用[skills标签](../quick-start/module-configuration-file.md#skills标签)来定义需要使用的能力,并由系统匹配声明支持该请求的所有应用来处理请求。例如,需要打开一个链接的请求,系统将匹配所有声明支持该请求的应用,然后让用户选择使用哪个应用打开链接。 - + ```ts let wantInfo = { - // uncomment line below if wish to implicitly query only in the specific bundle. - // bundleName: 'com.example.myapplication', - action: 'ohos.want.action.search', - // entities can be omitted - entities: [ 'entity.system.browsable' ], - uri: 'https://www.test.com:8080/query/student', - type: 'text/plain', + // uncomment line below if wish to implicitly query only in the specific bundle. + // bundleName: 'com.example.myapplication', + action: 'ohos.want.action.search', + // entities can be omitted + entities: [ 'entity.system.browsable' ], + uri: 'https://www.test.com:8080/query/student', + type: 'text/plain', }; ``` - + > **说明:** - > - 根据系统中待匹配Ability的匹配情况不同,使用隐式Want启动Ability时会出现以下三种情况。 - > - 未匹配到满足条件的Ability:启动失败。 - > - 匹配到一个满足条件的Ability:直接启动该Ability。 - > - 匹配到多个满足条件的Ability(UIAbility):弹出选择框让用户选择。 + > - 根据系统中待匹配应用组件的匹配情况不同,使用隐式Want启动应用组件时会出现以下三种情况。 + > - 未匹配到满足条件的应用组件:启动失败。 + > - 匹配到一个满足条件的应用组件:直接启动该应用组件。 + > - 匹配到多个满足条件的应用组件(UIAbility):弹出选择框让用户选择。 > > - 调用方传入的want参数中不带有abilityName和bundleName,则不允许通过隐式Want启动所有应用的ServiceExtensionAbility。 > diff --git a/zh-cn/application-dev/application-models/widget-development-fa.md b/zh-cn/application-dev/application-models/widget-development-fa.md index 751b2f40d5..f31c37dcf5 100644 --- a/zh-cn/application-dev/application-models/widget-development-fa.md +++ b/zh-cn/application-dev/application-models/widget-development-fa.md @@ -121,48 +121,48 @@ FA卡片开发,即基于[FA模型](fa-model-development-overview.md)的卡片 ```ts export default { - onCreate(want) { - console.info('FormAbility onCreate'); - // 使用方创建卡片时触发,提供方需要返回卡片数据绑定类 - let obj = { - "title": "titleOnCreate", - "detail": "detailOnCreate" - }; - let formData = formBindingData.createFormBindingData(obj); - return formData; - }, - onCastToNormal(formId) { - // 使用方将临时卡片转换为常态卡片触发,提供方需要做相应的处理 - console.info('FormAbility onCastToNormal'); - }, - onUpdate(formId) { - // 若卡片支持定时更新/定点更新/卡片使用方主动请求更新功能,则提供方需要重写该方法以支持数据更新 - console.info('FormAbility onUpdate'); - let obj = { - "title": "titleOnUpdate", - "detail": "detailOnUpdate" - }; - let formData = formBindingData.createFormBindingData(obj); - formProvider.updateForm(formId, formData).catch((error) => { - console.info('FormAbility updateForm, error:' + JSON.stringify(error)); - }); - }, - onVisibilityChange(newStatus) { - // 使用方发起可见或者不可见通知触发,提供方需要做相应的处理,仅系统应用生效 - console.info('FormAbility onVisibilityChange'); - }, - onEvent(formId, message) { - // 若卡片支持触发事件,则需要重写该方法并实现对事件的触发 - console.info('FormAbility onEvent'); - }, - onDestroy(formId) { - // 删除卡片实例数据 - console.info('FormAbility onDestroy'); - }, - onAcquireFormState(want) { - console.info('FormAbility onAcquireFormState'); - return formInfo.FormState.READY; - }, + onCreate(want) { + console.info('FormAbility onCreate'); + // 使用方创建卡片时触发,提供方需要返回卡片数据绑定类 + let obj = { + "title": "titleOnCreate", + "detail": "detailOnCreate" + }; + let formData = formBindingData.createFormBindingData(obj); + return formData; + }, + onCastToNormal(formId) { + // 使用方将临时卡片转换为常态卡片触发,提供方需要做相应的处理 + console.info('FormAbility onCastToNormal'); + }, + onUpdate(formId) { + // 若卡片支持定时更新/定点更新/卡片使用方主动请求更新功能,则提供方需要重写该方法以支持数据更新 + console.info('FormAbility onUpdate'); + let obj = { + "title": "titleOnUpdate", + "detail": "detailOnUpdate" + }; + let formData = formBindingData.createFormBindingData(obj); + formProvider.updateForm(formId, formData).catch((error) => { + console.info('FormAbility updateForm, error:' + JSON.stringify(error)); + }); + }, + onVisibilityChange(newStatus) { + // 使用方发起可见或者不可见通知触发,提供方需要做相应的处理,仅系统应用生效 + console.info('FormAbility onVisibilityChange'); + }, + onEvent(formId, message) { + // 若卡片支持触发事件,则需要重写该方法并实现对事件的触发 + console.info('FormAbility onEvent'); + }, + onDestroy(formId) { + // 删除卡片实例数据 + console.info('FormAbility onDestroy'); + }, + onAcquireFormState(want) { + console.info('FormAbility onAcquireFormState'); + return formInfo.FormState.READY; + }, } ``` @@ -186,15 +186,15 @@ FA卡片开发,即基于[FA模型](fa-model-development-overview.md)的卡片 ```json - "js": [{ - "name": "widget", - "pages": ["pages/index/index"], - "window": { - "designWidth": 720, - "autoDesignWidth": true - }, - "type": "form" - }] + "js": [{ + "name": "widget", + "pages": ["pages/index/index"], + "window": { + "designWidth": 720, + "autoDesignWidth": true + }, + "type": "form" + }] ``` - abilities模块,用于对应卡片的FormAbility,内部字段结构说明: @@ -273,7 +273,7 @@ async function storeFormInfo(formId: string, formName: string, tempFlag: boolean } } -// ... +... onCreate(want) { console.info('FormAbility onCreate'); @@ -291,7 +291,7 @@ async function storeFormInfo(formId: string, formName: string, tempFlag: boolean let formData = formBindingData.createFormBindingData(obj); return formData; } -// ... +... ``` 且需要适配onDestroy卡片删除通知接口,在其中实现卡片实例数据的删除。 @@ -311,14 +311,14 @@ async function deleteFormInfo(formId: string) { } } -// ... +... onDestroy(formId) { console.info('FormAbility onDestroy'); // 删除之前持久化的卡片实例数据 // 此接口请根据实际情况实现,具体请参考:FormExtAbility Stage模型卡片实例 deleteFormInfo(formId); } -// ... +... ``` 具体的持久化方法可以参考[数据管理开发指导](../database/app-data-persistence-overview.md)。 @@ -361,7 +361,7 @@ onUpdate(formId) { ![widget-development-fa](figures/widget-development-fa.png) > **说明:** -> FA模型当前仅支持JS扩展的类Web开发范式来实现卡片的UI界面。 +> FA模型当前仅支持JS扩展的类Web开发范式来实现卡片的UI。 - HML:使用类Web范式的组件描述卡片的页面信息。 -- GitLab