【Harmony OS - Stage应用模型】

基本概念

大类分为: 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配置生效
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/276952.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

记一次应急响应练习(Linux)

记一次应急响应练习(Linux) Linux: 请提交攻击者的IP地址 答: 192.168.31.132 思路: 通过查看历史命令和开放的8080端口看到这台主机上运行的是Tomcat服务。并且在历史命令中看到了Tomcat的安装路径。那么就算是找到了日志的查看点了&#x…

【WPF.NET开发】路由事件

本文内容 先决条件什么是路由事件?路由策略为什么使用路由事件?附加并实现路由事件处理程序类处理程序WPF 中的附加事件XAML 中的限定事件名称WPF 输入事件EventSetter 和 EventTrigger Windows Presentation Foundation (WPF) 应用程序开发人员和组件…

华为鸿蒙(HarmonyOS)介绍

华为鸿蒙(HarmonyOS)介绍 华为鸿蒙(HarmonyOS)是一款由华为自主研发的操作系统,旨在为各种智能设备提供一种统一、高效、安全的解决方案。鸿蒙系统基于微内核架构,可以应用于多种类型的设备,鸿…

vue项目中实现预览pdf

vue项目中实现预览pdf 1. iframe <iframe :src"pdfSrc"></iframe> ​data() {return {pdfSrc: http://192.168.0.254:19000/trend/2023/12/27/5635529375174c7798b5fabc22cbec45.pdf,}},​iframe {width: 100%;height: calc(100vh - 132px - 2 * 20px -…

main函数的参数ac和av

概要&#xff1a; main函数有两个参数&#xff0c;ac和av ac表示参数的个数&#xff0c;程序名包括在内。也就是说程序无参数运行时&#xff0c;ac的值为1 av是一个字符串数组&#xff0c;这个数组中的每个元素表示一个参数&#xff0c;程序名包括在内。也就是说&#xff0c…

CSS——定位、CSS高级技巧、修饰属性

1、定位 作用&#xff1a;灵活的改变盒子在网页中的位置 实现&#xff1a; 定位模式&#xff1a;position边偏移&#xff1a;设置盒子的位置 leftrighttopbottom 1.1 相对定位 position&#xff1a;relative <!DOCTYPE html> <html lang"en"> <…

夜天之书 #92 全票通过?同侪社群无须整齐划一。

近几年&#xff0c;国内开源项目捐赠到 Apache 软件基金会&#xff08;ASF&#xff09;的案例很有一些。几乎每个在进入孵化器和从孵化器当中毕业时发通稿的项目&#xff0c;都会选择在标题中加入“全票通过”的字样。 诚然&#xff0c;大部分项目在 ASF 孵化器中茁壮成长&…

MyBatis标签及其应用示例

MyBatis标签及其应用示例 1. select 1.1 标签属性 id唯一的标识符parameterType传给此语句的参数的全路径名或别名如&#xff1a;com.xxx.xxx.demo.entity.User或userresultType语句返回值类型或别名。如果是集合List&#xff0c;此处填写集合的泛型T&#xff0c;而不是集合…

力扣:968. 监控二叉树(贪心,二叉树)

题目&#xff1a; 给定一个二叉树&#xff0c;我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。 计算监控树的所有节点所需的最小摄像头数量。 示例 1&#xff1a; 输入&#xff1a;[0,0,null,0,0] 输出&#xff1a;1 解释&…

Oracle 学习(2)

过滤和排序数据 where条件过滤 日期格式 查询10号部门的员工信息&#xff1a;SQL> select * from emp where deptno10 查询”KING”的信息&#xff1a;SQL> select * from emp where ename KiNg 未选定行。 注意&#xff1a;字符串大小写敏感。 SQL> selec…

Oracle数据库导入csv 文件

Oracle数据库导入csv 文件

锐捷路由小型综合实验

一、实验拓扑 二、实验目的 1、熟练掌握ospf的配置 2、熟练掌握RIP的配置 3、熟练掌握静态路由的配置 4、熟练掌握各种路由协议之间的引入 5、熟练掌握telnet和ssh的配置 三、实验配置 R1 //配置telent username admin password admin123 enable password admin123 enable…

【iOS安全】越狱iOS安装Frida | 安装指定版本Frida

越狱iPhone安装Frida 本文的方法适用于已越狱的iPhone手机 打开Cydia&#xff0c;软件源&#xff0c;编辑&#xff08;右上角&#xff09;&#xff0c;添加&#xff08;左上角&#xff09;&#xff1a;https://build.frida.re 然后搜索Frida&#xff0c;点击安装 参考&#x…

嵌入式Linux:提升VMware虚拟机运行速度的方法

使用虚拟机运行Linux操作系统通常会比在物理机上直接安装系统的运行效率更低&#xff0c;本篇博文将介绍如何优化虚拟机的设置&#xff0c;进而提升虚拟机性能体验。 第1步&#xff1a;选择VMware菜单&#xff1a;编辑–>首选项–>更新&#xff0c;将”启动时检查产品更新…

如何应对人工智能时代下的网络与数据安全威胁

2023&#xff08;第四届&#xff09; 网络法治论坛 ——人工智能时代的网络与数据治理暨公益大讲堂于2023年12月23日在北方工业大学&#xff08;石景山晋元庄路5号院&#xff09;学生服务中心四层报告厅成功举办。网络法治论坛是在北京市法学会指导下的&#xff0c;由北京市网络…

uniapp中uview组件库的Search 搜索 的用法

目录 基本使用 #设置输入框形状 #是否开启清除控件 #是否开启右边控件 #自定义样式 API #Props #Events 基本使用 通过placeholder参数设置占位内容通过v-model双向绑定一个变量值&#xff0c;设置初始化时搜索框的值&#xff0c;如果初始内容为空&#xff0c;那么请绑…

Stage 模型

目录 1. 基本概念2. 应用及组件配置2.1 工程级目录2.2 模块级目录2.3 app.json5 全局配置文件2.4 module.json5 模块配置文件2.5 main_pages.json 页面路径配置文件 3.UIAbility生命周期4.页面及组件生命周期5.UIAbility的启动模式 1. 基本概念 FA模型&#xff1a;HarmonyOS早…

可以打印含图片的Word文件,不能直接打图片,怎么办

昨天在公司&#xff0c;有人问我打印一个图片。我自信满满&#xff1a;绝对可以&#xff01;因为这个打印机是我上周亲手联通&#xff0c;至少两个人安装成功&#xff0c;打印成功。 现实是&#xff0c;图片无法打印。试了几次没用。于是我打开WORD&#xff0c;插入图片后再打印…

Pytest fixture 及 conftest详解!

前言 fixture是在测试函数运行前后&#xff0c;由pytest执行的外壳函数。fixture中的代码可以定制&#xff0c;满足多变的测试需求&#xff0c;包括定义传入测试中的数据集、配置测试前系统的初始状态、为批量测试提供数据源等等。fixture是pytest的精髓所在&#xff0c;类似u…

Java连接Mysql报错:javax.net.ssl.SSLException: Received fatal alert: internal_error

大致报错日志如下&#xff1a; The last packet successfully received from the server was 11 milliseconds ago. The last packet sent successfully to the server was 10 milliseconds ago.at sun.reflect.GeneratedConstructorAccessor275.newInstance(Unknown Source)…