美文网首页鸿蒙OS app开发
UIAbility的生命周期

UIAbility的生命周期

作者: __Mr_Xie__ | 来源:发表于2023-11-19 15:59 被阅读0次

    当用户浏览、切换和返回到对应应用的时候,应用中的UIAbility实例会在其生命周期的不同状态之间转换。

    UIAbility类提供了很多回调,通过这些回调可以知晓当前UIAbility的某个状态已经发生改变:例如UIAbility的创建和销毁,或者UIAbility发生了前后台的状态切换。

    例如从桌面点击图库应用图标,到启动图库应用,应用的状态经过了从创建到前台展示的状态变化。如下图所示。

    从桌面点击图库应用图标启动应用
    回到桌面,从最近任务列表,切换回到图库应用,应用的状态经过了从后台到前台展示的状态变化。如下图所示。
    从最近任务列表切换回到图库应用
    UIAbility的使用过程中,会有多种生命周期状态。掌握UIAbility的生命周期,对于应用的开发非常重要。
    为了实现多设备形态上的裁剪和多窗口的可扩展性,系统对组件管理和窗口管理进行了解耦。UIAbility的生命周期包括CreateForegroundBackgroundDestroy四个状态,WindowStageCreateWindowStageDestroy为窗口管理器(WindowStage)在UIAbility中管理UI界面功能的两个生命周期回调,从而实现UIAbility与窗口之间的弱耦合。如下图所示。 UIAbility生命周期状态

    示例代码

    import UIAbility from '@ohos.app.ability.UIAbility';
    import window from '@ohos.window';
    
    export default class EntryAbility extends UIAbility {
        onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
            // 应用初始化
            ...
        }
    
        onWindowStageCreate(windowStage: window.WindowStage) {
            // 设置UI页面加载
            // 设置WindowStage的事件订阅(获焦/失焦、可见/不可见)
            ...
    
            windowStage.loadContent('pages/Index', (err, data) => {
                ...
            });
        }
    
        onForeground() {
            // 申请系统需要的资源,或者重新申请在onBackground中释放的资源
        }
    
        onBackground() {
            // 释放UI页面不可见时无用的资源,或者在此回调中执行较为耗时的操作
            // 例如状态保存等
            ...
        }
    
        onWindowStageDestroy() {
            // 释放UI页面资源
            ...
        }
    
        onDestroy() {
            // 系统资源的释放、数据的保存等
            ...
        }
    }
    

    相关文章

      网友评论

        本文标题:UIAbility的生命周期

        本文链接:https://www.haomeiwen.com/subject/walmwdtx.html