【Harmony OS - Stage应用模型】

2023-12-28 10:50:00

基本概念

大类分为: Ability Module: 功能模块 、Library Module: 共享功能模块

编译时概念:
Ability Module在编译时打包生成HAP(Harmony Ability Package),一个应用可能会有多个HAP,但是只能有且只有一个Entry HAP,其他都是Feature HAP,并且可以引用HSP (Harmony Share Package: 由Library Module编译生产)的模块,最后通过Bundle打包生成一个APP(Bundle Name唯一标识)。
运行时概念:
在移动端运行的时候,会创建一个AbilityStage舞台,里面主要是UIAbility(主要能力)和ExtensionAbility(拓展能力),每一个UIAbility实例会绑定一个WindowStage的舞台,并在上面创建一个Window窗口进行UI展示
在这里插入图片描述
在这里插入图片描述

配置文件

AppScope/app.json5中的是整个app应用的配置文件
entry/src/main/module.json5是当前这个模块的配置文件,当有多个模块的时候,每一个都会生成一个这样的文件
在这里插入图片描述

UIAbility的生命周期

根据上面运行时概念能看出,在我们打开应用时,在创建Ability实例之后,展示应用之前会先创建一个AbilityStage的生命周期,在该时期会创建多个Ability实例,其中应用界面主要是在UIAbility中创建,然后在其的windowStage所创建的Window窗口中进行渲染展示。
在这里插入图片描述

页面/组件的生命周期

@Component修饰的是组件, @Entry修饰的是页面(页面也是一个组件,也需要@Component修饰)
组件生命周期: aboutToAppear、aboutToDisappear
页面生命周期: aboutToAppear、build、onPageShow、onBackPress(后退键)、onPageHide、aboutToDisappear
所有组件执行顺序都是: 创建组件实例、执行build 当build中的子组件也执行完成之后,才会调用onPageShow,然后显示页面
在这里插入图片描述

UIAbility的启动模式

singleton(默认启动): 单实例模式,首次打开应用会创建一个实例,后续在不销毁的情况下,打开都是同一个实例
standard: 每次打开应用都会新创建一个实例,导致在内存中一个应用同时会出现多个任务列表
multiton: 每次打开都会重新创建一个实例,但是会销毁之前创建的实例,在内存中只有一个全新的实例
specified: 通过设置key来指定是否需要创建实例,如果key对应已经有实例就复用,没有就重新创建。比如文本编辑器,同时编辑多个文档的时候
singleton是单实例,其他都是多实例

UIAbility的相互切换

specified模式通常在多个UIAbility的相互切换的场景,主要有以下三个步骤:
1、当前Ability通过调用startAbility方法来拉起目标Ability
1.1 获取应用上下午
1.2 配置要调整的目标Ability的参赛
1.3 调用方法拉起对应Ability
在这里插入图片描述

2、在etc文件夹下新建一个AbilityStage的ts文件,在该AbilityStage文件的生命周期onAcceptWant中为目标Ability生成唯一表示的key,可以使用want传递的instanceKey,也可以自己拼接
在这里插入图片描述

3、在模块的module.json5配置文件中,通过配置srcEntry来让第二步创建的AbilityStage配置生效
在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_44273311/article/details/135226568
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。