HarmonyOS Stage模型基本概念讲解

本文 我们来说harmonyos中的一种应用模型
Stage模型

官方提供了两种模型 一种是早期的 FA模型 另一种就是就是 harmonyos 3.1才开始的新增的一种模型 Stage模型

目前来讲 Stage 会成为现在乃至将来 长期推进的一种模型
也就是 无论是 现在的harmonyos 4.0 乃至 之后要发布的 harmonyos next 都会建议我们通过 Stage模型开发

本文呢 我们先来看一下Stage模型基本的一个概念
首先 我们项目里都会有一个 entry 子模块
在这里插入图片描述
模块是应用的基本单元
它里面就会包含源代码 还有一些资源 以及一些配置文件之类的
那其实想这样的模块 我们在一个应用中还可以创建很多很多

但模块基本来讲,还是就分成两大类
第一类就像我们 entry这样 用来开发我们应用的一些能力的
像这样的 我们就称作 Ability Module
顾名思义 能力模块
一个应用的内部它的能力有很多很多,我们就可以把不同的能力 放到不同的模块开发
比如 大家很熟悉的微信
在这里插入图片描述
一个社交类的应用 它的核心功能其实就是社交嘛

那其中 聊天啊 朋友圈啊 好友啊 其实这些都可以分成一个社交类
这部分能力就可以放到同一个模块中
那后来 随着微信的发展 它有出来了一些新的功能 例如小程序呀 视频号呀等等
这些能力相互之间也都是独立的
所以 他们也都可以放在独立的 Ability Module 里面去

这样一来 我们整个应用的能力就都清晰的划分出来了
管理起来也非常的方便

这些属于一类 Ability Module
这些过程当中呢 他们就会有一些通用的 工具 资源 或者组件等等
那如果这些模块,大家都各自去开发,显然是一种重复和浪费

所以 我们就可以把重用的东西抽取出来,放到一个单独的模块里去
这种模块我们就称作 Library Module
顾名思义 就是 一种共享的依赖模块

那么 他们之间 Ability Module 就可以去引用 Library Module

然后 我们回到编辑器
我们选择根目录右键 选择New 就可以看到 module 模块选项了
在这里插入图片描述
点击之后 我们这里就会有这种 module 的各种模板
在这里插入图片描述
其实这么多 无法就是分成 Ability和Library
在这里插入图片描述
那么 这就是Stage模型创建的一个基本的项目结构了

但这是源码 最后整个项目还是会被打包成一个安装包
只是在Stage模型中 为了降低不同模块之间的耦合 每一个模块都可以独立编译或运行的
那么之后所有Ability类型的模块,将来就会被编译成 .HAP 格式的文件
但我们一个App那肯定只能有一个入口呀,对不对?
那么 当我们有多个HAP文件时 那么就要设置一个入口文件 我们将它称之为 Entry 类型的HAP文件

其他就可以理解为一些拓展功能 叫 Feature类型的 HAP

简单说 一个项目只能有一个 Entry类型的HAP 因为你没办法给一个app多个入口,但是呢 可以有多个Feature 拓展功能可以一直往后加呀

最终 我们所有的HAP 肯定还是都要合并到一个app中的
合并到一起之后 我们称之为 Bundle
那么 我们可以设置一个 Bundle
Bundle 会有一个name属性 我们可以给它一个独立标识
最后 Bundle 合并在一起 就是一个app安装包

而且 最大的好处是 首先 Entry 肯定是要的 跑不掉 但其他模块 可以选择性的安装
这样 你就可以让应用没那么大 以及提高安装效率

首先,我们知道,每一个HAP都是可以独立运行的,它在运行时 为了展示我们的界面和一些逻辑
它都会创建一个 AbilityStage 实例 AbilityStage 在这里 被我们翻译为应用组件能力的舞台
这个舞台的意思就很明显了,应用展示自己能力的地方。

AbilityStage 最常见的就是
ExtensionAbility和UIAbility
UIAbility 它是 包含UI界面的应用组件,是系统调度的基本单元。

UIAbility内部会先有一个Windowstage 简单说 就是一个窗口 在这个窗口中展示我们的UI界面
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IP地理位置查询定位:技术原理与实际应用

在互联网时代,IP地址是连接世界的桥梁,而了解IP地址的地理位置对于网络管理、个性化服务以及安全监控都至关重要。IP数据云将深入探讨IP地理位置查询定位的技术原理、实际应用场景以及相关的隐私保护问题,旨在为读者提供全面了解和应用该技术…

印刷机械故障诊断:虹科MSR165助力Müller Martini AG成功案例

在为杂志装订机开发新产品的过程中,作为印刷后处理机械领域的全球领导者,Mller Martini AG公司发现了传感器故障的问题。通过使用虹科MSR 微型加速度数据记录仪,成功地确定了故障的原因。 新杂志装订机中的三刀修整装置的故障部件是边缘传感器…

BOSS直聘招聘经验

招聘低端兼职岗位。流量很大,来的人通常实力也不足。 招聘高端兼职岗位。流量不多。来的人通常具备一定实力。 招聘高薪职位,流量一般,会有有实力的勾搭。 招聘低薪职位,流量一般。通常没什么实力。

使用 Optimum Intel 在英特尔至强上加速 StarCoder: Q8/Q4 及投机解码

引言 近来,随着 BigCode 的 StarCoder 以及 Meta AI 的 Code Llama 等诸多先进模型的发布,代码生成模型变得炙手可热。同时,业界也涌现出了大量的致力于优化大语言模型 (LLM) 的运行速度及易用性的工作。我们很高兴能够分享我们在英特尔至强 …

测试多线程架构的问题

在测试多线程架构时,需要考虑多个方面以确保系统的稳定性和性能。以下是一些关键问题,需要在测试过程中特别关注: 线程同步 多线程环境中,线程同步是非常重要的问题。由于多个线程可能同时访问共享资源,因此需要使用…

Linux环境下查看磁盘层级占用空间的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

C++从入门到精通 第十三章(认识STL)

写在前面: 本系列专栏主要介绍C的相关知识,思路以下面的参考链接教程为主,大部分笔记也出自该教程,笔者的原创部分主要在示例代码的注释部分。除了参考下面的链接教程以外,笔者还参考了其它的一些C教材(比…

下一代自动化爬虫神器--playwright,所见即所得,配合逆向不要太香!!!

文章目录 1.Playwright介绍2.与 Selenium 和 pyppeteer 相比,Playwright 具有以下几个区别和优势3.在爬虫中使用 Playwright 的好处4.环境安装5.屏幕录制6.保留记录cookie信息7.playwright代码编写详解1.第一个Playwright脚本(1)同步模式&…

Redis之缓存穿透问题解决方案实践SpringBoot3+Docker

文章目录 一、介绍二、方案介绍三、Redis Docker部署四、SpringBoot3 Base代码1. 依赖配置2. 基本代码 五、缓存优化代码1. 校验机制2. 布隆过滤器3. 逻辑优化 一、介绍 当一种请求,总是能越过缓存,调用数据库,就是缓存穿透。 比如当请求一…

阿里云国际站如何助力餐饮行业出海?

近些年,中国企业出海方兴未艾。全球不同国家的经济政治诉求加剧了商业领域的博弈,全球产业供应链格局持续发生深刻变化。无论是海外建厂,还是海外找市场,中国产业链的全球布局蔚然成风,企业想突破现阶段瓶颈,谋求更好的…

⭐北邮复试刷题106. 从中序与后序遍历序列构造二叉树__递归分治 (力扣每日一题)

106. 从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7], postor…

ros自定义action记录

文章目录 自定义action1. 定义action文件2. 修改 package.xml3. 修改 CMakeLists.txt4. 运行 catkin build5. simple_action_server.py6. simple_action_client.py 测试 自定义action ros 版本:kinetic 自定义test包的文件结构如下 |-- test | |-- CMakeLists.t…

Internet Download Manager 6.42.3 (IDM) 中文免激活绿色版

相信很多网友都遇到过一种情况,网页有些视频资源或者音频资源不知道如何下载,一直不知道如何解决,为此小编特意带来了这款:Internet Download Manager电脑版,这是一款非常专业且十分好用的下载工具,也就是大…

Android 11以上获取不到第三方app是否安装

开年第一篇&#xff0c;处理了一下年前的小问题。 问题&#xff1a;本地app跳转到第三方app地图进行导航&#xff0c;获取不到第三方地图是否安装。 解决&#xff1a; 1.添加包名 This can be done by adding a <queries> element in the Android manifest.在app下的…

1408: [宁波25届]方格稿纸

题目描述 小猪在小学中认识了很多的字&#xff0c;终于会写一点作文了。某天小猪买了一张方格稿纸来写作文,n 行m 列,形状如下所示&#xff1a; 上图中nm5 。 某天小猪的邻居小小猪来小猪家玩&#xff0c; 用黑墨水笔把小猪新买的方格稿纸涂黑了很多格子。 每个格子不是完全黑…

psp游戏存档收集SAVEDATA

不想从头开始 ppsspp存档目录 pc&#xff1a;ppsspp解压目录\memstick\PSP\SAVEDATA 安卓&#xff1a;根目录\PSP\SAVEDATA 噬神者2(日版) NPJH50832099c645531020001000 風燐-https://wwl.lanzouq.com/iI1R01owozxa 咲夜-https://wwl.lanzouq.com/id1tX1owp2uf につてのぬ…

华为笔记本原厂系统镜像恢复安装教程方法

1.安装方法有两种&#xff0c;一种是用PE安装&#xff0c;一种是华为工厂包安装&#xff08;安装完成自带F10智能还原&#xff09; 若没有原装系统文件&#xff0c;请在这里远程恢复安装&#xff1a;https://pan.baidu.com/s/166gtt2okmMmuPUL1Fo3Gpg?pwdm64f 提取码:m64f …

Pormise---如何解决javascript中回调的信任问题?【详解】

本人编程小白一枚&#xff0c;希望多多包涵~ 如果阅读有疑问的话&#xff0c;欢迎评论或私信&#xff01;&#xff01; 本人会很热心的阐述自己的想法&#xff01;谢谢&#xff01;&#xff01;&#xff01; 文章目录 回调中的信任问题回调给我们带来的烦恼&#xff1f;调用过早…

【深度学习:对象跟踪】对象跟踪完整指南 [教程]

【深度学习&#xff1a;对象跟踪】对象跟踪完整指南 [教程] 什么是计算机视觉中的对象跟踪&#xff1f;对象跟踪有哪些不同类型&#xff1f;图像跟踪视频跟踪单目标跟踪多对象跟踪 计算机视觉中对象跟踪的用例监测零售自动驾驶汽车医疗保健 对象跟踪方法步骤 1&#xff1a;目标…

客户端web开发工具

文章目录 安全网络Linter-->捕获代码错误-->eslint源代码控制-->Git代码格式化-->Prettier打包工具--Parcel--Webpack 转换--Babel开发后阶段测试工具配置工具其他 node&#xff0c;npm、yarnnode.js包管理器npmyarn https://developer.mozilla.org/zh-CN/docs/Lea…