首页 > 其他分享 >应用模型开发指南上新介绍

应用模型开发指南上新介绍

时间:2023-03-01 11:34:25浏览次数:39  
标签:指南 Ability 启动 模型 组件 文档 应用 HAP

Module、HAP、Ability、AbilitySta-ge、Context……您是否曾经被这些搞不懂又绕不开的知识点困扰?

现在,全新的《应用程序包基础知识》及《应用模型开发指南》为您答疑解惑!

这里有您关注的概念解析、原理机制阐述,也有丰富的场景化开发指导,快来体验吧~

 

应用程序包基础知识:

https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/application-package-overview-0000001478181125-V3

 

一、基本概念解析

新版文档中的知识点,介绍更全面,逻辑更清晰,提供了各类基本概念解析,帮助开发者更快学习、掌握系统能力。以下是新版文档部分概念展示。

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(指定实例模式)。

指定实例模式演示效果

 

更多文档信息,请访问:

https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/uiability-launch-type-0000001428061476-V3

 

三、场景化开发指导

本次还补充/完善了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.com/cn/docs/documentation/doc-guides-V3/uiability-intra-device-interaction-0000001478181149-V3

 

四、我们期待您的反馈

以上就是本期文档君为大家准备的HarmonyOS应用程序包基础知识及应用模型开发指南上新内容,希望能够帮助开发者更高效的探索、体验、上手HarmonyOS。

同时,我们十分重视开发者的意见,欢迎各位开发者在HarmonyOS应用开发官网积极反馈意见,帮助我们持续提升文档体验。

我们将持续改进文档体验、丰富和完善内容,感谢各位开发者的支持及信赖,您的满意是我们持续提升文档体验的目标和动力。

敬请期待HarmonyOS开发者公众号更多相关推送,获取最新文档和内容资源!

 

标签:指南,Ability,启动,模型,组件,文档,应用,HAP
From: https://www.cnblogs.com/HarmonyOSDev/p/17167538.html

相关文章

  • 4K HDMI输出固定广角拍监控摄摄像机法庭应用
    派尼珂Pnioke4K超高清专业摄像机NK-UHD300C采用1/1.8SONYCMOS专业4K图像传感器,890万像素,视频输出接口支持HDMI和USB输出,HDMI原始无压缩输出4K@30Fps视频,19201080,3840216......
  • SPINAND UBI 离线烧录 开发指南
    SPINANDUBI离线烧录开发指南1概述编写目的:介绍SunxiSPINand烧写时的数据布局2名词解释词义UBIunsortedblockimagePEBphysicaleraseblock......
  • SPINAND UBI 离线烧录 开发指南
    SPINANDUBI离线烧录开发指南1概述编写目的:介绍SunxiSPINand烧写时的数据布局2名词解释词义UBIunsortedblockimagePEBphysicaleraseblock......
  • RabbitMQ入门指南
    1.简介RabbitMQ是采用erlang语言实现AMQP(AdvancedMessageQueuingProtocol,高级消息队列协议)的消息中间件,它最初起源于金融系统,用于在分布式系统中存储转发消息......
  • 多项式拟合模型
    多项式拟合模型一、多项式拟合数学模型多项式拟合是一种通过将数据拟合到多项式函数来建立数学模型的方法。该方法可以用于分析实验或观测数据中的关系,并用多项式函数来......
  • IO模型
    1.IO多路复用服务端importsocketimportselectserver=socket.socket()server.bind(('127.0.0.1',8089))server.listen(5)server.setblocking(False)read_list......
  • 梯度下降,损失函数,模型训练
    我发现这种数学问题,国内的教材,就会给你整的罗里吧嗦,说不清楚,让人非常难理解损失函数(lossfunction)或代价函数(costfunction)是将随机事件或其有关随机变量的取值映射为非负......
  • 使用手工特征提升模型性能
    本文将使用信用违约数据集介绍手工特征的概念和创建过程。通过对原始数据进行手工的特征工程,我们可以将模型的准确性和性能提升到新的水平,为更精确的预测和更明智的业务决......
  • Python-tomorrow应用于UI自动化的简单使用
    一、简介tomorrow属于第三方的一个模块,使用threads方法作为装饰器去修饰一个普通的函数,使其可以达到并发效果。使用起来非常简单。 二、安装pipinstalltomorrow......
  • 全志 芯片 Linux MIPI CSI摄像头接口开发指南 VIN DVP CSI MIPI V4l2
    1前言1.1文档简介介绍VIN(videoinput)驱动配置,API接口和上层使用方法。1.2目标读者camera驱动开发、维护人员和应用开发人员。1.3适用范围​表1-1:适用产品......