鸿蒙模块概念和应用启动相关类(HAP、HAR、HSP、AbilityStage、UIAbility、WindowStage、window)

目录

鸿蒙模块概念

HAP

entry

feature

har

shared

使用场景

HAP、HAR、HSP介绍

HAP、HAR、HSP开发

应用的启动

AbilityStage

UIAbility 

WindowStage

Window

拉起应用到显示到前台流程


鸿蒙模块概念

HAP

hap包是手机安装的最小单元,1个app包含一个或多个hap包。对应到代码工程中是一个module,每个module会有一个module.json5文件作为该module的配置文件,在src/main/文件夹下。

module.json5文件中根据module/type属性来区分模块的类型。有entry(应用主模块)、feature(应用的动态特性模块)、har(静态共享包模块)、shared(动态共享包模块)。

entry

应用的主模块,作为应用的入口,提供了应用的基础功能,配置有UIAbility。

feature

应用的动态特性模块,作为应用能力的扩展,可以根据用户的需求和设备类型进行选择性安装,通常也配置有UIAbility。

应用程序包可以只包含一个基础的entry包,也可以包含一个基础的entry包和多个功能性的feature包。

har

静态共享包(har),可以包含代码、C++库、资源和配置文件。通过har可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。可以发布到OHPM中心仓,供其他应用使用。编译后静态共享包不存在了,会被拆分到使用的位置,通常不带有UIAbility。

文档中心

shared

用来配置动态共享包(hsp),可以包含代码、C++库、资源和配置文件,通过hsp可以实现代码和资源的共享。hsp不支持独立发布,而是跟随其宿主应用的APP包一起发布,与宿主应用同进程,具有相同的包名和生命周期。编译后正常生成一个hsp包,通常不带有UIAbility。

使用场景

多个hap/hsp共用的代码和资源放在同一个hsp中,可以提高代码、资源的可重用性和可维护性,同时编译打包时也只保留一份HSP代码和资源,能够有效控制应用包大小。

hsp在运行时按需加载,有助于提升应用性能。

HAP、HAR、HSP介绍

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V14/hap-package-V14

HAP、HAR、HSP开发

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/ide-har-V13

应用的启动

这里需要用到4个类:AbilityStage、UIAbility、WindowStage、window。

AbilityStage

HAP的运行时类。提供在HAP加载的时候,通知开发者,可以在此进行该HAP的初始化(如资源预加载,线程创建等)能力。

常用生命周期有:onCreate(应用创建时调用)、onDestroy(应用正常销毁时调用,应用程序异常退出或被终止将不会被调用)、onConfigurationUpdate(环境变化通知接口,发生全局配置变更时回调)

文档中心

UIAbility 

 系统调度的基本单元,为应用提供绘制界面的窗口。每一个UIAbility组件实例都会在最近任务列表中显示一个对应的任务。一个应用可以包含一个或多个UIAbility组件。

常用生命周期有:onCreate(冷启动,UIAbility实例处于完全关闭状态下被创建完成后进入该生命周期回调)、onWindowStageCreate(WindowStage创建后调用)、onForeground(应用进入前台)、onBackground(应用从前台转到后台)、onWindowStageWillDestroy(WindowStage即将销毁时调用)、onWindowStageDestroy(WindowStage销毁后调用)、onNewWant(热启动,UIAbility实例已经启动并在前台运行过,由于某些原因切换到后台,再次启动该UIAbility实例)、onBackPressed(侧滑退出,返回true为不销毁UIAbility实例,false为销毁)。

文档中心

WindowStage

窗口管理器。管理各个基本窗口单元,即Window实例。窗口实例通过WindowStage.on('windowStageEvent',(data)=>{})对窗口事件进行监听。有SHOWN(应用进入前台,可交互状态)、ACTIVE(应用处于前台获焦状态,可交互状态)、INACTIVE(应用处于前台失去焦状态,可交互状态)、HIDDEN(应用进入后台,不可交互状态)、PAUSED(前台应用进入多任务中心,不可交互状态)、RESUMED(应用从多任务中心到前台,回复可交互状态)。其中data==window.WindowStageEventType.SHOWN判断应用状态。

文档中心

Window

当前窗口实例,窗口管理器管理的基本单元。需通过WindowStage上的方法getMainWindow()、getTopWindow()、getLastWindow()、createWindow()等获取实例,然后再调用该实例上的方法设置窗口属性。

文档中心

拉起应用到显示到前台流程

主线程加载hap包代码,根据module.json5中指定的module/srcEntry路径创建AbilityStage(可以不用配置,系统会隐式创建)实例,在AbilityStage中系统会根据module.json5中指定的module/abilities/srcEntry路径创建UIAbility实例,UIAbility在onForeground(进入前台)生命周期之前会创建一个WindowStage实例,然后进入onWindowStageCreate生命周期,在该生命周期中可以拿到windowStage实例,并在其loadContent方法中选择挂载的页面组件。

下面是用户打开应用到侧滑退出的流程图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/959128.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

为什么IDEA提示不推荐@Autowired❓️如果使用@Resource呢❓️

前言 在使用 Spring 框架时,依赖注入(DI)是一个非常重要的概念。通过注解,我们可以方便地将类的实例注入到其他类中,提升开发效率。Autowired又是被大家最为熟知的方式,但很多开发者在使用 IntelliJ IDEA …

【Uniapp-Vue3】uni-icons的安装和使用

一、uni-icon的安装 进入到如下页面中,点击“点击下载&安装”。 uni-icons 图标 | uni-app官网 点击“下载插件并导入HBuilder”,如果没有登录就登陆一下 网页中会打开Hbuilder,进入Hbuilder以后,选择需要使用该插件的项目进…

论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(三)

Understanding Diffusion Models: A Unified Perspective(三) 文章概括 文章概括 引用: article{luo2022understanding,title{Understanding diffusion models: A unified perspective},author{Luo, Calvin},journal{arXiv preprint arXiv:…

群晖docker获取私有化镜像http: server gave HTTP response to HTTPS client].

群晖docker获取私有化镜像提示http: server gave HTTP response to HTTPS clien 问题描述 层级时间用户事件Information2023/07/08 12:47:45cxlogeAdd image from xx.xx.31.240:1923/go-gitea/gitea:1.19.3Error2023/07/08 12:47:48cxlogeFailed to pull image [Get "http…

Charles 4.6.7 浏览器网络调试指南:HTTPS抓包(三)

概述 在现代互联网应用中,网络请求和响应是服务交互的核心。对于开发者和测试人员来说,能够准确捕获并分析这些请求,是保证系统稳定性和性能的关键。Charles作为一个强大的网络调试工具,不仅可以捕获普通的HTTP请求,还…

从spec到iso的koji使用

了解一下Linux发行版流程::从spec到iso的koji使用 for Fedora 41。 Fedora 41有24235个包,我们选择 minimal 的几十个源码包,百多个rpm包构建。 配3台服务器 40C64G 44C64G 80C128G,有点大材小用,一台就够了 &#xf…

系统思考—复杂问题的根源分析

在企业中,许多问题看似简单,背后却潜藏着复杂的因果关系。传统的思维方式往往只能看到表面,而无法深入挖掘问题的真正根源。我们常常通过“表面解决”来应对眼前的症状,但这往往只是治标不治本。 比如,销量下降时&…

低代码开发:效率革命与市场机遇

一、引言 IT技术推动了全球信息化的浪潮,然而软件开发效率的提升却未能像摩尔定律那样迅速,逐渐成为发展的瓶颈。近年来,低代码领域发展迅猛,不仅诞生了估值超10亿美元的独角兽OutSystems,还吸引了AWS、Google、Micro…

leetcode——相交链表(java)

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后&…

浅谈APP之历史股票通过echarts绘图

浅谈APP之历史股票通过echarts绘图 需求描述 今天我们需要做一个简单的历史股票收盘价格通过echarts进行绘图,效果如下: 业务实现 代码框架 代码框架如下: . 依赖包下载 我们通过网站下载自己需要的涉及的图标,勾选之后进…

【音视频处理】FFmpeg for Windows 安装教程

FFmpeg 是一个强大的多媒体处理工具,可以处理音视频的各种任务,包括格式转换、裁剪、合并等操作,市面上你可以看到的几乎所有的音视频的处理工具内部都离不开FFmpeg的身影。 本文将详细介绍如何在 Windows 系统上安装 FFmpeg。 1. 下载 FFmp…

leetcode刷题记录(八十一)——236. 二叉树的最近公共祖先

(一)问题描述 236. 二叉树的最近公共祖先 - 力扣(LeetCode)236. 二叉树的最近公共祖先 - 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科 [https://baike.baidu.com/item/%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B…

【28】Word:石油化工设备技术❗

目录 题目 NO1.2 NO3 NO4 题目 NO1.2 F12:另存为将“Word素材.docx”文件另存为“Word. docx”(“docx”为文件扩展名) 光标来到表格上方→插入→形状→新建画布→单击选中→格式→高度/宽度(格式→大小对话框→取消勾选✔锁定…

总线、UART、IIC、SPI

一图流 总线 概念 连接多个部件的信息传输线,是各部件共享的传输介质 类型 片内总线:连接处理器内核和外设的总线,在芯片内部 片外总线:连接芯片和其他芯片或者模块的总线 总线的通信 总线通信的方式 串行通信 数据按位顺序传…

【Postman接口测试】接口用例设计实战—以聚合数据的新闻头条接口为例

在接口测试中,精心设计测试用例是确保接口质量的关键。本文将以聚合数据的新闻头条接口(新闻详情查询)为例,深入运用多种测试用例设计方法,打造全面且细致的测试用例集。 一、等价类划分法 (一&#xff…

Frida使用指南(三)- Frida-Native-Hook

1.Process、Module、Memory基础 1.Process Process 对象代表当前被Hook的进程,能获取进程的信息,枚举模块,枚举范围等 2.Module Module 对象代表一个加载到进程的模块(例如,在 Windows 上的 DLL,或在 Linux/Android 上的 .so 文件), 能查询模块的信息,如模块的基址、名…

ChatGPT结合Excel辅助学术数据分析详细步骤分享!

目录 一.Excel在学术论文中的作用✔ 二.Excel的提示词✔ 三. 编写 Excel 命令 四. 编写宏 五. 执行复杂的任务 六. 将 ChatGPT 变成有用的 Excel 助手 一.Excel在学术论文中的作用✔ Excel作为一种广泛使用的电子表格软件,在学术论文中可以发挥多种重要作用&a…

数字化转型的核心是什么,企业该如何实施?

一、数字化转型的必要性 传统企业在推进业务创新和IT系统建设时,常采用项目式方法,虽经典但易引发“系统烟囱”与“数据孤岛”问题,困扰管理层。 数字化转型是企业战略层面的变革,其核心是利用数字化技术重构业务、流程与组织。…

力扣206题——反转链表

#题目 #代码 既然要反转,那么头结点如果不为空最后会成为尾结点,所以我们把头结点的后继指向null; 接着就是对头结点的下一个节点进行置换操作,大家可多思考一下代码

深入MapReduce——引入

引入 前面我们已经深入了HDFS的设计与实现,对于分布式系统也有了不错的理解。 但HDFS仅仅解决了海量数据存储和读写的问题。要想让数据产生价值,一定是需要从数据中挖掘出价值才行,这就需要我们拥有海量数据的计算处理能力。 下面我们还是…