鸿蒙Harmony(十一)Stage模型

Stage模型:HarmonyOS 3.1 Developer Preview版本开始新增的模型,是目前主推且会长期演进的模型。在该模型中,由于提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的"舞台",因此称这种应用模型为Stage模型。

UIAbility

UIAbility生命周期

UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态

UIAbility启动模式

singleton(单实例模式:每次调用startAbility()方法时,如果应用进程中该类型的UIAbility实例已经存在,则复用系统中的UIAbility实例。系统中只存在唯一一个该UIAbility实例,即在最近任务列表中只存在一个该类型的UIAbility实例。)

standard(标准实例模式:standard启动模式为标准实例模式,每次调用startAbility()方法时,都会在应用进程中创建一个新的该类型UIAbility实例。即在最近任务列表中可以看到有多个该类型的UIAbility实例。)

specified(指定实例模式:specified启动模式为指定实例模式,针对一些特殊场景使用(例如文档应用中每次新建文档希望都能新建一个文档实例,重复打开一个已保存的文档希望打开的都是同一个文档实例)。)

javascript 复制代码
// specified 启动模式
let want = {
    deviceId: '', // deviceId为空表示本设备
    bundleName: 'com.example.myapplication',
    abilityName: 'FuncAbility',
    moduleName: 'module1', // moduleName非必选
    parameters: { // 自定义信息
        instanceKey: getInstance(),
    },
}
// context为调用方UIAbility的AbilityContext
this.context.startAbility(want).then(() => {
    // ...
}).catch((err) => {
    // ...
})

由于FuncAbility的启动模式配置为了指定实例启动模式,在FuncAbility启动之前,会先进入其对应的AbilityStage的onAcceptWant()生命周期回调中,解析传入的want参数,获取"instanceKey"自定义参数。根据业务需要通过AbilityStage的onAcceptWant()生命周期回调返回一个字符串Key标识。如果返回的Key对应一个已启动的UIAbility,则会将之前的UIAbility拉回前台并获焦,而不创建新的实例,否则创建新的实例并启动。

javascript 复制代码
import AbilityStage from '@ohos.app.ability.AbilityStage';

export default class MyAbilityStage extends AbilityStage {
    onAcceptWant(want): string {
        // 在被调用方的AbilityStage中,针对启动模式为specified的UIAbility返回一个UIAbility实例对应的一个Key值
        // 当前示例指的是module1 Module的FuncAbility
        if (want.abilityName === 'FuncAbility') {
            // 返回的字符串Key标识为自定义拼接的字符串内容
            return `ControlModule_EntryAbilityInstance_${want.parameters.instanceKey}`;
        }

        return '';
    }
}

页面与组件生命周期

页面生命周期:onPageShow onBackPress onPageHide

组件生命周期:aboutToAppear、aboutToDisappear

相关推荐
t***L2663 小时前
HarmonyOS在工业互联网中的边缘计算
华为·边缘计算·harmonyos
A***07179 小时前
HarmonyOS在智能家居中的安防系统
华为·智能家居·harmonyos
爱笑的眼睛119 小时前
HarmonyOS Scroll滚动容器深度性能优化实践
华为·harmonyos
6***x54512 小时前
HarmonyOS在智能穿戴中的健康提醒
华为·harmonyos
x***J34812 小时前
HarmonyOS在智能车载中的Huawei HiCar
华为·harmonyos
周倦岚12 小时前
【HarmonyOS】后台任务
华为·harmonyos
lqj_本人12 小时前
鸿蒙Qt生命周期:后台被杀后的数据自救
qt·华为·harmonyos
G***669113 小时前
HarmonyOS在智能家居中的Huawei SmartHome
华为·智能家居·harmonyos
t***D26413 小时前
HarmonyOS分布式安全
安全·华为·harmonyos
9***P33413 小时前
HarmonyOS多语言支持
华为·harmonyos