当前位置: 首页 > article >正文

鸿蒙模块概念和应用启动相关类(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方法中选择挂载的页面组件。

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


http://www.kler.cn/a/515835.html

相关文章:

  • 2024 行远自迩,笃行不怠
  • MFC程序设计(二)基于对话框编程
  • 3.1 Go函数调用过程
  • 【cuda学习日记】3.3 CUDA执行模型--展开循环
  • Golang Gin系列-4:Gin Framework入门教程
  • .NET 8 项目 Docker 方式部署到 Linux 系统详细操作步骤
  • 无人机图传模块:深入理解其工作原理与实际效用
  • 【Spring Boot】Spring原理:Bean的作用域和生命周期
  • 使用傅里叶变换进行图像边缘检测
  • 华为小米vivo向上,苹果荣耀OPPO向下
  • Haskell语言的区块链
  • Kotlin语言的数据结构
  • 大数据学习(40)- Flink执行流
  • 【面试总结】FFN(前馈神经网络)在Transformer模型中先升维再降维的原因
  • 如何在WordPress中轻松创建Mega菜单
  • MySQL分区表:万字详解与实践指南
  • 码随想录算法训练营Day13 | 二叉树的各种遍历
  • Android设备:Linux远程lldb调试
  • Avalonia:C# 跨平台桌面应用的优秀选择
  • Android Audio音频系统
  • solidity基础 -- 存储类型
  • 快速入门Flink
  • 电子电气架构 --- 智能电动汽车电子与其软件架构
  • 隐藏php版本信息x-powered-by
  • 【Uniapp-Vue3】setTabBar设置TabBar和下拉刷新API
  • 如何提升flink的处理速度?