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 开发者公众号更多相干推送,获取最新文档和内容资源!