HarmonyOS Stage模型基本概念讲解

news2024/9/24 1:19:11

本文 我们来说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.coloradmin.cn/o/1463764.html

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

相关文章

LeetCode.106. 从中序与后序遍历序列构造二叉树

题目 106. 从中序与后序遍历序列构造二叉树 分析 前面讲过根据前序和中序构建二叉树:博客链接 这道题是告诉我们一颗二叉树的后序和中序,让我们根据后序和中序构造出整颗二叉树。 拿到这道题,我们首先要知道中序的后序又怎样的性质&#…

时序预测 | Matlab实现BO-LSSVM贝叶斯算法优化最小二乘支持向量机时间序列预测

时序预测 | Matlab实现BO-LSSVM贝叶斯算法优化最小二乘支持向量机时间序列预测 目录 时序预测 | Matlab实现BO-LSSVM贝叶斯算法优化最小二乘支持向量机时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现BO-LSSVM贝叶斯算法优化最小二乘支持向量机时间…

【GStreamer】GstElement详解:GStreamer 中最重要的对象

1、什么是元素GstElement? 每个解码器、编码器、解复用器、视频或音频输出实际上都是一个GstElement。GstElement可以视为一个黑盒子:例如,对于解码器元素,输入为已编码数据,输出为解码后的数据,解码过程已由GstElement封装好。 2、都有哪些元素GstElement? 2.1 源点…

PG索引分析示例

名Index MethodTable Name约束字段唯一键并发idx_alarm_originator_alarm_typeB-Treealarmoriginator_id "pg_catalog"."uuid_ops" ASC NULLS LAST, type COLLATE "pg_catalog"."default" "pg_catalog"."text_ops"…

2024-02-22(Spark)

1.Spark Application程序入口为:SparkContext,任何一个应用首先需要构建SparkContext对象,两个步骤构建: 第一步,创建SparkConf对象。设置Spark Application基本信息,比如应用的名称AppName和应用运行Mast…

【PX4SimulinkGazebo联合仿真】在Simulink中使用ROS2控制无人机沿自定义8字形轨迹正向飞行(带偏航角控制)并在Gazebo中可视化

在Simulink中使用ROS2控制无人机沿自定义8字形轨迹正向飞行(带偏航角控制)并在Gazebo中可视化 系统架构Matlab官方例程Control a Simulated UAV Using ROS 2 and PX4 Bridge运行所需的环境配置PX4&Simulink&Gazebo联合仿真实现方法建立Simulink模…

渗流量监测方法有哪些,怎么选择?

在水利工程中,渗流量的监测是至关重要的,因为它直接影响着建筑物的安全和性能。渗流量观测就是观测和分析在水头作用下渗过建筑物和地基的水量。为了准确测量这一数据,我们需要选择合适的监测方法。那么,如何选择渗流量监测方法呢…

Nginx跳转模块location

一.location模块概述 1.定义 location块是server块的一个指令。作用:基于Nginx服务器接收到的请求字符串,虚拟主机名称(ip,域名)、url匹配,对特定请求进行处理。 2.三种匹配类别 精准匹配:l…

LeetCode刷题---对称二叉树

解题思路: 首先对二叉树进行判空,如果根节点为空,则返回true 接下来对当前节点的左节点和右节点进行判断 1.如果左节点和右节点同时为空,则返回true。 2.如果左节点和右节点只有一个为空时,返回false。 3.如果左节点的值和右节点的…

独家深度 | 一文看懂 ClickHouse vs Elasticsearch:谁更胜一筹?

简介: 本文的主旨在于通过彻底剖析ClickHouse和Elasticsearch的内核架构,从原理上讲明白两者的优劣之处,同时会附上一份覆盖多场景的测试报告给读者作为参考。 作者:阿里云数据库OLAP产品部 仁劼 原文地址:https://developer.ali…

时序预测demo 代码快速实现 MLP效果比LSTM 好,简单模拟数据

【PyTorch修炼】用pytorch写一个经常用来测试时序模型的简单常规套路(LSTM多步迭代预测) 层数的理解: LSTM(长短期记忆)的层数指的是在神经网络中堆叠的LSTM单元的数量。层数决定了网络能够学习的复杂性和深度。每一层…

PLC_博图系列☞基本指令“插入输入”

PLC_博图系列☞基本指令“插入输入” 文章目录 PLC_博图系列☞基本指令“插入输入”背景介绍插入输入说明参数示例 关键字: PLC、 西门子、 博图、 Siemens 、 插入输入 背景介绍 这是一篇关于PLC编程的文章,特别是关于西门子的博图软件。我并不是专…

基于ORB-SLAM2与YOLOv8剔除动态特征点(三种方法)

基于ORB-SLAM2与YOLOv8剔除动态特征点(三种方法) 写上篇文章时测试过程比较乱,写的时候有些地方有点失误,所以重新写了这篇 本文内容均在RGB-D环境下进行程序测试 本文涉及到的动态特征点剔除速度均是以https://cvg.cit.tum.de/data/datasets/rgbd-dat…

Java学习-21 网络编程

什么是网络编程? 可以让设备中的程序与网络上其他设备中的程序进行数据交互(实现网络通信的) 基本的通信架构 基本的通信架构有2种形式: CS架构(Client客户端/Server服务端) BS架构(Browser浏览器/Server服务端)。 网络通信三要素 IP …

粉色ui微信小程序源码/背景图/头像/壁纸小程序源码带流量主

云开发版粉色UI微信小程序源码,背景图、头像、壁纸小程序源码,带流量主功能。 云开发小程序源码无需服务器和域名即可搭建小程序另外还带有流量主功能噢!微信平台注册小程序就可以了。 这套粉色UI非常的好看,里面保护有背景图、…

【国际化】用JQuery-i18next的国际化demo,引入json

参考: 使用 i18next 的 jQuery 国际化 (i18n) 渐进式指南 (locize.com) i18next-http-backend/example/jquery/index.html at master i18next/i18next-http-backend (github.com) 文档 可能需要解决一下跨域问题,因为浏览器读取本…

基于Java+小程序点餐系统设计与实现(源码+部署文档)

博主介绍: ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到 Java项目精品实…

ABCDE联合创始人BMAN确认出席Hack .Summit() 2024香港Web3盛会

ABCDE联合创始人和普通合伙人BMAN确认出席Hack .Summit() 2024! ABCDE联合创始人和普通合伙人BMAN确认出席由 Hack VC 主办,并由 AltLayer 和 Berachain 联合主办,与 SNZ 和数码港合作,由 Techub News 承办的Hack.Summit() 2024区…

保护你的Web应用——CSRF攻击与防御

在Web应用开发过程中,保护用户的隐私和安全至关重要。而CSRF(Cross-Site Request Forgery,跨站请求伪造)攻击是一种常见的安全威胁,通过利用受信任用户的身份进行恶意操作,威胁到用户的账户和数据安全。本文…

django配置视图并与模版进行数据交互

目录 安装django 创建一个django项目 项目结构 创建视图层views.py 写入视图函数 创建对应视图的路由 创建模版层 配置项目中的模版路径 创建模版html文件 启动项目 浏览器访问结果 安装django pip install django 创建一个django项目 这里最好用命令行完成&#xf…