ArkTS API详解(AbilityLifecycleCallback)

49 阅读2分钟

@ohos.app.ability.abilityLifecycleCallback

AbilityLifecycleCallback模块提供应用上下文ApplicationContext的生命周期发生变化时触发相应回调的能力,订阅进程内Ability生命周期变化。在进程内Ability生命周期变化时,如创建、可见/不可见、获焦/失焦、销毁等,会触发进入相应的回调,其中返回的此次注册监听生命周期的ID(每次注册该ID会自增+1,当超过监听上限数量2^63-1时,返回-1)

export default class MainAbility extends UIAbility {
    lifecycleId: number;

    onCreate(want, launchParam) {
        let abilityLifecycleCallback = {
            // 注册监听应用上下文的生命周期后,在ability创建时触发回调。
            onAbilityCreate(ability) {
                console.info("onAbilityCreate ability:" + JSON.stringify(ability));
            },
            
            // 注册监听应用上下文的生命周期后,在windowStage创建时触发回调。
            onWindowStageCreate(ability, windowStage) {
                console.info("onWindowStageCreate ability:" + JSON.stringify(ability));
                console.info("onWindowStageCreate windowStage:" + JSON.stringify(windowStage));
            },
            
            // 注册监听应用上下文的生命周期后,在windowStage获焦时触发回调。
            onWindowStageActive(ability, windowStage) {
                console.info("onWindowStageActive ability:" + JSON.stringify(ability));
                console.info("onWindowStageActive windowStage:" + JSON.stringify(windowStage));
            },
            
            // 注册监听应用上下文的生命周期后,在windowStage失焦时触发回调。
            onWindowStageInactive(ability, windowStage) {
                console.info("onWindowStageInactive ability:" + JSON.stringify(ability));
                console.info("onWindowStageInactive windowStage:" + JSON.stringify(windowStage));
            },
            
            // 注册监听应用上下文的生命周期后,在windowStage销毁时触发回调。
            onWindowStageDestroy(ability, windowStage) {
                console.info("onWindowStageDestroy ability:" + JSON.stringify(ability));
                console.info("onWindowStageDestroy windowStage:" + JSON.stringify(windowStage));
            },
            
            // 注册监听应用上下文的生命周期后,在ability销毁时触发回调。
            onAbilityDestroy(ability) {
                console.info("onAbilityDestroy ability:" + JSON.stringify(ability));
            },
            
            // 注册监听应用上下文的生命周期后,在ability的状态从后台转到前台时触发回调。
            onAbilityForeground(ability) {
                console.info("onAbilityForeground ability:" + JSON.stringify(ability));
            },
            
            // 注册监听应用上下文的生命周期后,在ability的状态从前台转到后台时触发回调。
            onAbilityBackground(ability) {
                console.info("onAbilityBackground ability:" + JSON.stringify(ability));
            },
            
            // 注册监听应用上下文的生命周期后,在ability迁移时触发回调。
            onAbilityContinue(ability) {
                console.info("onAbilityContinue ability:" + JSON.stringify(ability));
            }
        }
        // 1. 通过context属性获取applicationContext
        let applicationContext = this.context.getApplicationContext();
        // 2. 通过applicationContext注册监听应用内生命周期
        this.lifecycleId = applicationContext.on("abilityLifecycle", abilityLifecycleCallback);
        console.info("register callback number: " + JSON.stringify(this.lifecycleId));
    }

    onDestroy() {
        // 3.注销监听
        let applicationContext = this.context.getApplicationContext();
        applicationContext.off("abilityLifecycle", this.lifecycleId, (error, data) => {
            console.info("unregister callback success, err: " + JSON.stringify(error));
        });
    }
}