Module、HAP、Ability、AbilitySta-ge、Context……您是否已经被这些搞不懂又绕不开的知识点困扰?
当初,全新的《利用程序包基础知识》及《利用模型开发指南》为您答疑解惑!
这里有您关注的概念解析、原理机制论述,也有丰盛的场景化开发领导,快来体验吧~
利用程序包基础知识:https://developer.harmonyos.c...
一、基本概念解析
新版文档中的知识点,介绍更全面,逻辑更清晰,提供了各类基本概念解析,帮忙开发者更快学习、把握零碎能力。以下是新版文档局部概念展现。
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.c...
二、原理机制解读
必要的原理、机制解读,让开发者“知其然,知其所以然”。
为让大家更好的了解零碎工作原理,咱们应用举例、图文联合等形式来具体解读原理机制。接下来,咱们以Ability组件启动模式—specified为例进行介绍。
specified(指定实例模式),在Ability实例创立之前,容许开发者为该实例创立一个惟一的字符串Key,创立的Ability实例绑定Key之后,后续每次调用startAbility()办法时,都会询问利用应用哪个Key对应的Ability实例来响应startAbility申请。运行时由Ability外部业务决定是否创立多实例,如果匹配有该Ability实例的Key,则间接拉起与之绑定的Ability实例,否则创立一个新的Ability实例。
例如用户在利用中反复关上同一个文档时,启动的均是最近工作列表中的同一个工作。以及在利用中反复新建文档时,启动的均是最近工作列表中新的工作。这种状况下能够将Ability配置为specified(指定实例模式)。
指定实例模式演示成果
更多文档信息,请拜访:https://developer.harmonyos.c...
三、场景化开发领导
本次还补充/欠缺了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非首次启动两种启动指定页面的场景,以及在解说启动指定页面之前会解说到在调用方如何指定启动页面。
更多文档信息,请拜访:https://developer.harmonyos.c...
四、咱们期待您的反馈
以上就是本期文档君为大家筹备的HarmonyOS利用程序包基础知识及利用模型开发指南上新内容,心愿可能帮忙开发者更高效的摸索、体验、上手HarmonyOS。
同时,咱们十分重视开发者的意见,欢送各位开发者在HarmonyOS利用开发官网踊跃反馈意见,帮忙咱们继续晋升文档体验。
咱们将继续改良文档体验、丰盛和欠缺内容,感激各位开发者的反对及信赖,您的称心是咱们继续晋升文档体验的指标和能源。
敬请期待HarmonyOS开发者公众号更多相干推送,获取最新文档和内容资源!