From 1c8a7c53db98b0488fdaed4159959d47aac0506e Mon Sep 17 00:00:00 2001 From: zyjhandsome Date: Thu, 5 Jan 2023 15:00:27 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=8AUIAbility=E7=94=9F=E5=91=BD=E5=91=A8?= =?UTF-8?q?=E6=9C=9F=E3=80=8B=E7=AB=A0=E8=8A=82=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?onWindowStageCreate=E5=92=8ConWindowStageDestory=E5=9B=9E?= =?UTF-8?q?=E8=B0=83=E7=9A=84=E7=A4=BA=E4=BE=8B=E4=BB=A3=E7=A0=81=E5=86=85?= =?UTF-8?q?=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zyjhandsome --- .../application-models/uiability-lifecycle.md | 45 ++++++++++++++----- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/zh-cn/application-dev/application-models/uiability-lifecycle.md b/zh-cn/application-dev/application-models/uiability-lifecycle.md index 2e5eeb8700..6abd36b4f4 100644 --- a/zh-cn/application-dev/application-models/uiability-lifecycle.md +++ b/zh-cn/application-dev/application-models/uiability-lifecycle.md @@ -21,7 +21,7 @@ Create状态为在应用加载过程中,UIAbility实例创建完成时触发 ```ts import UIAbility from '@ohos.app.ability.UIAbility'; -import Window from '@ohos.window'; +import window from '@ohos.window'; export default class EntryAbility extends UIAbility { onCreate(want, launchParam) { @@ -43,22 +43,37 @@ UIAbility实例创建完成之后,在进入Foreground之前,系统会创建 ```ts import UIAbility from '@ohos.app.ability.UIAbility'; -import Window from '@ohos.window'; +import window from '@ohos.window'; export default class EntryAbility extends UIAbility { // ... - onWindowStageCreate(windowStage: Window.WindowStage) { + onWindowStageCreate(windowStage: window.WindowStage) { // 设置WindowStage的事件订阅(获焦/失焦、可见/不可见) try { windowStage.on('windowStageEvent', (data) => { - console.info('Succeeded in enabling the listener for window stage event changes. Data: ' + - JSON.stringify(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)); - }; + JSON.stringify(exception)); + } // 设置UI界面加载 windowStage.loadContent('pages/Index', (err, data) => { @@ -76,19 +91,27 @@ export default class EntryAbility extends UIAbility { ```ts import UIAbility from '@ohos.app.ability.UIAbility'; -import Window from '@ohos.window'; +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 { - windowStage.off('windowStageEvent'); + this.windowStage.off('windowStageEvent'); } catch (exception) { console.error('Failed to disable the listener for window stage event changes. Cause:' + - JSON.stringify(exception)); + JSON.stringify(exception)); }; } } @@ -134,7 +157,7 @@ Destroy状态在UIAbility实例销毁时触发。可以在onDestroy()回调中 ```ts import UIAbility from '@ohos.app.ability.UIAbility'; -import Window from '@ohos.window'; +import window from '@ohos.window'; export default class EntryAbility extends UIAbility { // ... -- GitLab