手机响应式网站开发/优化什么意思
Module、HAP、Ability、AbilitySta-ge、Context……您是否曾经被这些搞不懂又绕不开的知识点困扰?
现在,全新的《应用程序包基础知识》及《应用模型开发指南》为您答疑解惑!
这里有您关注的概念解析、原理机制阐述,也有丰富的场景化开发指导,快来体验吧~
应用程序包基础知识:
文档中心
一、基本概念解析
新版文档中的知识点,介绍更全面,逻辑更清晰,提供了各类基本概念解析,帮助开发者更快学习、掌握系统能力。以下是新版文档部分概念展示。
1、HAP是什么?
开发者通过DevEco Studio把应用程序编译为一个或者多个.hap后缀的文件,即HAP(Harmony Ability Package)。HAP是HarmonyOS应用安装的基本单位,包含了编译后的代码、资源、三方库及配置文件。HAP可分为Entry和Feature两种类型。
1)Entry类型的HAP:是应用的主模块,在module.json5中的type属性配置为entry类型。在同一个应用中,同一设备类型只支持一个Entry类型的HAP,通常用于实现应用的入口界面、入口图标、主特性功能等。
2)Feature类型的HAP:是应用的动态特性模块,在module.json5中的type属性配置为feature类型。一个应用程序包可以包含一个或多个Feature类型的HAP,也可以不包含;Feature类型的HAP通常用于实现应用的特性功能,可以配置成按需下载安装,也可以配置成随Entry类型的HAP一起下载安装(请参见module对象内部结构中的“deliveryWithInstall”)。
2、Module是什么?
在DevEco Studio工程目录中,一个HAP对应一个Module。
Module是指DevEco Studio工程中的功能单元。一个DevEco Studio工程可以包含多个Module,同时Module分为“Ability”、“Library”两种类型。此处的HAP对应“Ability”类型的Module;下文即将介绍的HAR(Harmony Ability Resources)包对应“Library”类型的Module。
3、Bundle是什么?
每个HarmonyOS应用可以包含多个.hap文件,这些.hap文件合在一起称为一个Bundle,每个应用都有一个BundleName。在每台设备上,已安装应用的BundleName是唯一的。需要特别说明的是:在应用上架到应用市场时,需要把应用包含的所有.hap文件(即Bundle)打包为一个.app后缀的文件用于上架,这个.app文件称为App Pack(Application Package),其中同时包含了描述App Pack属性的pack.info文件;但是,在云端分发和端侧安装时,都是以HAP为单位进行分发和安装的。
4、Ability组件概述
Ability组件是一种包含用户界面的应用组件,用于与用户交互。Ability组件是系统调度的基本单元,为应用提供绘制界面的窗口;一个Ability组件中可以通过多个页面来实现一个模块功能。
建议将不同模块功能拆解为不同的Ability组件单独实现,即将一个独立的功能模块放到一个Ability组件中,以多页面的形式呈现。每一个Ability组件实例,都对应于一个任务,可以在最近任务列表中呈现。
在开发态,一个Module可以包含一个或多个Ability组件,如下图所示。
Module与Ability组件关系示意图
更多文档信息,请访问:
https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/uiability-overview-0000001477980929-V3
二、原理机制解读
必要的原理、机制解读,让开发者“知其然,知其所以然”。
为让大家更好的理解系统工作原理,我们使用举例、图文结合等方式来详细解读原理机制。接下来,我们以Ability组件启动模式—specified为例进行介绍。
specified(指定实例模式),在Ability实例创建之前,允许开发者为该实例创建一个唯一的字符串Key,创建的Ability实例绑定Key之后,后续每次调用startAbility()方法时,都会询问应用使用哪个Key对应的Ability实例来响应startAbility请求。运行时由Ability内部业务决定是否创建多实例,如果匹配有该Ability实例的Key,则直接拉起与之绑定的Ability实例,否则创建一个新的Ability实例。
例如用户在应用中重复打开同一个文档时,启动的均是最近任务列表中的同一个任务。以及在应用中重复新建文档时,启动的均是最近任务列表中新的任务。这种情况下可以将Ability配置为specified(指定实例模式)。
指定实例模式演示效果
更多文档信息,请访问:
文档中心
三、场景化开发指导
本次还补充/完善了20+个开发场景指导,只为让文档更贴近实际开发活动,助力开发者高效开发。以下为部分场景展示。
1、如何实现Ability组件与UI数据同步
本次按场景提供了具体的开发指导,主要包括:
使用EventHub进行数据通信:EventHub提供了Ability组件/ExtensionAbility组件级别的事件机制,以Ability组件/ExtensionAbility组件为中心提供了订阅、取消订阅和触发事件的数据通信能力。
使用globalThis进行数据同步:globalThis是ArkTS引擎实例内部的一个全局对象,引擎实例下的Ability/Page都可以使用,因此可以使用globalThis全局对象进行数据同步。
2、跨Ability组件跳转
详细的场景化开发指导,主要包括:
启动应用内的Ability:当一个应用内包含多个Ability时,存在应用内启动Ability的场景。
启动应用内的Ability并获取返回结果:在一个EntryAbility启动另外一个FuncAbility时,希望在被启动的FuncAbility完成相关业务后,能将结果返回给调用方。例如在应用中将入口功能和帐号登录功能分别设计为两个独立的Ability,在帐号登录Ability中完成登录操作后,需要将登录的结果返回给入口Ability。
启动其他应用的Ability:启动其他应用的Ability,通常用户只需要完成一个通用的操作(例如需要选择一个文档应用来查看某个文档的内容信息),推荐使用隐式Want启动。系统会根据调用方的want参数来识别和启动匹配到的应用Ability。
启动其他应用的Ability并获取返回结果:当使用隐式Want启动其他应用的Ability并希望获取返回结果时,调用方需要使用startAbility-ForResult()方法启动目标Ability。
启动Ability的指定页面:一个Ability可以对应多个页面,在不同的场景下启动该Ability时需要展示不同的页面,例如从一个Ability的页面中启动另外一个Ability时,希望启动该Ability的指定页面。本文主要讲解目标Ability首次启动和目标Ability非首次启动两种启动指定页面的场景,以及在讲解启动指定页面之前会讲解到在调用方如何指定启动页面。
更多文档信息,请访问:
文档中心
四、我们期待您的反馈
以上就是本期文档君为大家准备的HarmonyOS应用程序包基础知识及应用模型开发指南上新内容,希望能够帮助开发者更高效的探索、体验、上手HarmonyOS。
同时,我们十分重视开发者的意见,欢迎各位开发者在HarmonyOS应用开发官网积极反馈意见,帮助我们持续提升文档体验。
我们将持续改进文档体验、丰富和完善内容,感谢各位开发者的支持及信赖,您的满意是我们持续提升文档体验的目标和动力。
敬请期待HarmonyOS开发者公众号更多相关推送,获取最新文档和内容资源!
相关文章:

应用模型开发指南上新介绍
Module、HAP、Ability、AbilitySta-ge、Context……您是否曾经被这些搞不懂又绕不开的知识点困扰? 现在,全新的《应用程序包基础知识》及《应用模型开发指南》为您答疑解惑! 这里有您关注的概念解析、原理机制阐述,也有丰富的…...

Dbeaver连接Hive数据库操作指导
背景:由于工作需要,当前分析研究的数据基于Hadoop的Hive数据库中,且Hadoop服务端无权限进行操作且使用安全模式,在研究了Dbeaver、Squirrel和Hue三种连接Hive的工具,在无法绕开useKey认证的情况下,只能使用…...

【RabbitMQ笔记09】消息队列RabbitMQ之常见方法的使用
这篇文章,主要介绍消息队列RabbitMQ之常见方法的使用。 目录 一、消息队列常见方法 1.1、连接工厂ConnectionFactory 1.2、连接Connection 1.3、通道Channel 1.4、交换机相关方法 (1)exchangeDeclare()声明交换机 1.5、队列相关方法 …...

Linux字符设备驱动模型之设备号
从上文中可知,在Linux用户空间中,如若需要操作硬件设备,均通过/dev目录下的设备文件节点进行操作,基本上每一种设备都会存在一个或者多个的设备节点。 并且在Linux内核中,其表示字符设备的结构成员也提供了相应的设备号…...

C++多态原理
请看下面的程序,该程序演示了多态类对象存储空间的大小。 #include <iostream> using namespace std; class A {public:int i;virtual void func() {}virtual void func2() {} }; class B : public A {int j;void func() {} }; int main() {cout << si…...

PMP认证与NPDP认证哪个含金量高?
两个证涉及的领域不一样的,一个是项目管理,对应的是项目经理;一个是产品管理,对应的是产品经理。含金量不能相比,但在各自的领域的含金量是很高的,至少专业程度或者知名度是最高的。 我来分别说一下PMP认证…...

改进YOLOv7-Tiny系列:首发改进结合BiFPN结构的特征融合网络,网络融合更多有效特征,高效涨点
💡该教程为改进进阶指南,属于《芒果书》📚系列,包含大量的原创首发改进方式, 所有文章都是全网首发原创改进内容🚀 内容出品:CSDN博客独家更新 @CSDN芒果汁没有芒果 💡本篇文章 基于 YOLOv5、YOLOv7芒果改进YOLO系列:芒果改进YOLOv7-Tiny系列:首发改进结合BiFPN结…...

PPC Insights系列:洞见安全多方图联邦
开放隐私计算开放隐私计算开放隐私计算OpenMPC是国内第一个且影响力最大的隐私计算开放社区。社区秉承开放共享的精神,专注于隐私计算行业的研究与布道。社区致力于隐私计算技术的传播,愿成为中国 “隐私计算最后一公里的服务区”。183篇原创内容公众号知…...

SQLite注入记录(目前最全、核心函数用法、布尔盲注、时间盲注、webshell、动态库,绕过方式)
目录 与Mysql区别 全部核心函数 普通注入 查询所有列 查看所有表名...

Java简单的生成/解析二维码(zxing qrcode)
Hi I’m Shendi Java简单的生成/解析二维码(zxing qrcode) 在之前使用 qrcode.js 方式生成二维码,但在不同设备上难免会有一些兼容问题,于是改为后端(Java)生成二维码图片 这里使用 Google 的 zxing包 Jar…...

若依项目导出后端响应的Excel文件流处理
若依开源项目:http://doc.ruoyi.vip/ruoyi-vue 问题 前端 1. download.js 添加自定义方法 /*** 自定义方法:导出后端响应的 excel 文件流* param url 请求后端的接口地址 例如:"/downloadExcel"* param name 响应后的文件名称&…...

华为OD机试【独家】提供C语言题解 - 数组排序
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明数组…...

JVM详解——内存结构
文章目录内存结构1、 运行时数据区2、虚拟机栈3、本地方法栈4、程序计数器5、 堆6、方法区7、运行时常量池8、内存溢出和内存泄漏9、 堆溢出内存结构 1、 运行时数据区 Java虚拟机在运行Java程序期间将管理的内存划分为不同的数据区,不同的区域负责不同的职能&…...

Jvisualvm监控Tomcat以及相关参数优化
Tomcat阻塞模式 阻塞模式(BIO) 客户端和服务器创建一个连接,它就会创建一个线程来处理这个连接,以为这客户端创建了几个连接,服务端就需要创建几个线程来处理你,导致线程会产生很多,有很多线程…...

界面组件DevExpress WinForms v22.2 - 全面升级数据展示功能
DevExpress WinForms拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜…...

正点原子第一期
ZYNQ是一个fpga用来硬件编程,外加一个软件编程 FPGA是可通过编程来修改其逻辑功能的数字集成电路 第三篇语法篇 第七章 verilog HDL语法 Verilog的简介 可编程逻辑电路:允许用户自行修改内部连接的集成电路,其内部的电路结构可以通过编程数…...

「mysql是怎样运行的」第24章 一条记录的多幅面孔---事务的隔离级别与MVCC
「mysql是怎样运行的」第24章 一条记录的多幅面孔—事务的隔离级别与MVCC 文章目录「mysql是怎样运行的」第24章 一条记录的多幅面孔---事务的隔离级别与MVCC一、事前准备二、事务的隔离级别事务并发执行遇到的问题SQL标准中的四种隔离级别MySQL中支持的四种隔离级别三、MVCC原…...

入门Java第十五天 线程
一、多线程 1.1进程和线程 进程:进程就是操作系统中运行的每一个应用程序。例如:微信,QQ 线程:线程是进程中的每一个任务。 多线程:在一个进程中,可以同时执行多个线程。同时完成多个任务。 并发&#x…...

探索用卷积神经网络实现MNIST数据集分类
问题对比单个全连接网络,在卷积神经网络层的加持下,初始时,整个神经网络模型的性能是否会更好。方法模型设计两层卷积神经网络(包含池化层),一层全连接网络。选择 5 x 5 的卷积核,输入通道为 1&…...

MySQL 索引失效场景
1,前言 索引主要是为了提高表的查询速率,但在某些情况下,索引也会失效的情况。 2,失效场景 2.1 最左前缀法则 查询从索引最左列开始,如果跳过索引中的age列,那么age后面字段的索引都将失效,…...

Xcode开发工具,图片放入ios工程
Xcode开发工具,图片放入ios工程,有三种方式: 一:Assets Assets.xcassets 一般是以蓝色的Assets.xcassets的文件夹形式在工程中,以Image Set的形式管理。当一组图片放入的时候同时会生成描述文件Contents.jso…...

操作系统权限提升(十九)之Linux提权-SUID提权
系列文章 操作系统权限提升(十八)之Linux提权-内核提权 SUID提权 SUID介绍 SUID是一种特殊权限,设置了suid的程序文件,在用户执行该程序时,用户的权限是该程序文件属主的权限,例如程序文件的属主是root,那么执行该…...

直播 | StarRocks 实战系列第三期--StarRocks 运维的那些事
2023 年开春, StarRocks 社区重磅推出入门级实战系列直播,手把手带你从 Zero to Hero 成为一个 “StarRocks Pro”!通过实际操作和应用场景的结合,我们将帮你系统性地学习 StarRocks 这个当今最热门的开源 OLAP 数据库。本次&…...

KingabseES执行计划-分区剪枝(partition pruning)
概述 分区修剪(Partition Pruning)是分区表性能的查询优化技术 。在分区修剪中,优化器分析SQL语句中的FROM和WHERE子句,以在构建分区访问列表时消除不需要的分区。此功能使数据库只能在与SQL语句相关的分区上执行操作。 参数 enable_partition_pruning 设…...

Operator-sdk 在 KaiwuDB 容器云中的使用
一、使用背景KaiwuDB Operator 是一个自动运维部署工具,可以在 Kubernetes 环境上部署 KaiwuDB集群,借助 Operator 可实现无缝运行在公有云厂商提供的 Kubernetes 平台上,让 KaiwuDB 成为真正的 Cloud-Native 数据库。使用传统的自动化工具会…...

【数据挖掘】2、数据预处理
文章目录一、数据预处理的意义1.1 缺失数据1.1.1 原因1.1.2 方案1.1.3 离群点分析1.2 重复数据1.2.1 原因1.2.2 去重的方案1.3 数据转换1.4 数据描述二、数据预处理方法2.1 特征选择 Feature Selection2.2 特征提取 Feature Extraction2.2.1 PCA 主成分分析2.2.2 LDA 线性判别分…...

(四十六)大白话在数据库里,哪些操作会导致在表级别加锁呢?
之前我们已经给大家讲解了数据库里的行锁的概念,其实还是比较简单,容易理解的,因为在讲解锁这个概念之前,对于多事务并发以及隔离,我们已经深入讲解过了,所以大家应该很容易在脑子里有一个多事务并发执行的…...

【Android源码面试宝典】MMKV从使用到原理分析(二)
上一章节,我们从使用入手,进行了MMKV的简单讲解,我们通过分析简单的运行时日志,从中大概猜到了一些MMKV的代码内部流程,同时,我们也提出了若干的疑问?还是那句话,带着目标(问题)去阅读一篇源码,那么往往收获的知识,更加深入&扎实。 本节,我们一起来从源码层次…...

如何使用ADFSRelay分析和研究针对ADFS的NTLM中继攻击
关于ADFSRelay ADFSRelay是一款功能强大的概念验证工具,可以帮助广大研究人员分析和研究针对ADFS的NTLM中继攻击。 ADFSRelay这款工具由NTLMParse和ADFSRelay这两个实用程序组成。其中,NTLMParse用于解码base64编码的NTLM消息,并打印有关消…...

【Python学习笔记】第二十二节 Python XML 解析
一、什么是XMLXML即ExtentsibleMarkup Language(可扩展标记语言),是用来定义其它语言的一种元语言。XML 被设计用来传输和存储数据。XML 是一套定义语义标记的规则,它没有标签集(tagset),也没有语法规则(grammatical rule)。任何XML文档对任何…...