HarmonyOS 鸿蒙Next中har包中监听ability生命周期
HarmonyOS 鸿蒙Next中har包中监听ability生命周期
import { BusinessError } from "@kit.BasicServicesKit";
import { AbilityLifecycleCallback } from "@kit.AbilityKit";
import { window } from "@kit.ArkUI";
@Component
export struct MainPage {
@State message: string = 'Hello World';
// 定义生命周期ID
lifecycleId: number = -1;
aboutToAppear(): void {
// 定义生命周期回调对象
let abilityLifecycleCallback: AbilityLifecycleCallback = {
// 当UIAbility创建时被调用
onAbilityCreate(uiAbility) {
console.log('onAbilityCreate');
},
// 当窗口创建时被调用
onWindowStageCreate(uiAbility, windowStage: window.WindowStage) {
console.log('onWindowStageCreate');
},
// 当窗口处于活动状态时被调用
onWindowStageActive(uiAbility, windowStage: window.WindowStage) {
console.log('onWindowStageActive');
},
// 当窗口处于非活动状态时被调用
onWindowStageInactive(uiAbility, windowStage: window.WindowStage) {
console.log('onWindowStageInactive');
},
// 当窗口被销毁时被调用
onWindowStageDestroy(uiAbility, windowStage: window.WindowStage) {
console.log('onWindowStageDestroy');
},
// 当UIAbility被销毁时被调用
onAbilityDestroy(uiAbility) {
console.log('onAbilityDestroy');
},
// 当UIAbility从后台转到前台时触发回调
onAbilityForeground(uiAbility) {
console.log('onAbilityForeground');
},
// 当UIAbility从前台转到后台时触发回调
onAbilityBackground(uiAbility) {
console.log('onAbilityBackground');
},
// 当UIAbility迁移时被调用
onAbilityContinue(uiAbility) {
console.log('onAbilityContinue');
}
};
// 获取应用上下文
let applicationContext = getContext(this).getApplicationContext();
try {
// 注册应用内生命周期回调
this.lifecycleId = applicationContext.on('abilityLifecycle', abilityLifecycleCallback);
} catch (err) {
let code = (err as BusinessError).code;
let message = (err as BusinessError).message;
console.error(`Failed to register applicationContext. Code is ${code}, message is ${message}`);
}
}
aboutToDisappear(): void {
// 获取应用上下文
let applicationContext = getContext(this).getApplicationContext();
try {
// 取消应用内生命周期回调
applicationContext.off('abilityLifecycle', this.lifecycleId);
} catch (err) {
let code = (err as BusinessError).code;
let message = (err as BusinessError).message;
console.error( `Failed to unregister applicationContext. Code is ${code}, message is ${message}`);
}
}
build() {
Row() {
Column() {
Text(this.message)
.fontSize($r('app.float.page_text_font_size'))
.fontWeight(FontWeight.Bold)
.onClick(() => {
this.message = 'Welcome';
})
}
.width('100%')
}
.height('100%')
}
}
更多关于HarmonyOS 鸿蒙Next中har包中监听ability生命周期的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
在HarmonyOS鸿蒙Next中,har包内可通过UIAbility
生命周期回调方法监听ability状态变化。主要包括onCreate
、onWindowStageCreate
、onForeground
、onBackground
和onDestroy
。开发者需在对应ability的代码文件中重写这些方法,实现自定义逻辑。
更多关于HarmonyOS 鸿蒙Next中har包中监听ability生命周期的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,通过AbilityLifecycleCallback
接口可以监听UIAbility的生命周期事件。代码中通过applicationContext.on('abilityLifecycle', callback)
注册回调,并在aboutToDisappear
中通过off
方法取消注册,确保资源正确释放。生命周期事件包括UIAbility创建、销毁、前后台切换以及窗口阶段变化等,适用于在HAR包中统一管理跨组件的生命周期逻辑。注意异常处理,避免因注册失败导致应用崩溃。