首页 > 其他分享 >【鸿蒙开发笔记】如何理解 UIAbility 组件以及它的生命周期

【鸿蒙开发笔记】如何理解 UIAbility 组件以及它的生命周期

时间:2024-09-05 21:22:11浏览次数:11  
标签:触发 生命周期 鸿蒙 UIAbility 实例 UI 组件 回调

UIAbility 组件是一种包含了 UI 的应用组件,主要用于和用户交互。
UIAbility 组件是系统调度的基本单元,为应用提供绘制界面的窗口,一个应用可以有多个 UIAbility 组件。
每一个 UIAbility 组件实例都会在最近任务列表中显示为一个对应的任务。那么就存在两种场景:

  1. 如果要在任务视图中只展示一个任务,那就是用一个 UIAbility;
  2. 想在任务视图中展示多个任务,或者同时打开多个窗口,那就使用多个 UIAbility 开发不同的模块功能

UIAbility 组件的生命周期

用户打开、切换和返回到对应的应用时候,应用中的 UIAbility 实例会触发不同的生命周期函数。

UIAbility 的生命周期有四个状态:Create、Foreground、Background 和 Destroy

  • Create:就是应用在加载过程中,UIAbility 实例创建完成时触发,系统会调用 onCreate 函数,可以在这个函数中进行页面初始化操作;
  • 在进入 Foreground 之前,系统会创建一个 windowStage,然后进入 onWindowStageCreate 回调,可以在回调中设置 UI 加载、设置 WindowStage 的事件监听。在onWindowStageCreate 回调中通过 loadContent()函数来设置应用要加载的页面。
  • Foreground,是 UIAbility 实例切换到前台的时候触发,对应的是 onForeground()回调,是在 UI 可见之前触发的,在这个回调中可以申请系统需要的资源。
  • Background,是 UIAbility 切换到后台的时候触发,也就是 UIAbility 的 UI 完全不可见之后,可以在 onBackground()回调中释放资源,或者执行一些比较耗时的操作,比如状态保存,停止定位功能,节省系统的资源消耗。
  • 在 UIAbility 实例销毁之前,会进入 onWindowStageDestroy()回调,可以在这个回调中释放 UI 资源,比如注销获焦/失焦的 WindowStage 事件。进入 onWindowStageDestroy()回调之前,会有一个叫 WindowStageWillDestroy 状态,它对应的回调是 onWindowStageWillDestroy()回调,在这个回调中释放 windowStage 对象获取的资源。
  • Destroy 状态,是在 UIAbility 实例销毁的时候触发,对应的回调是 onDestroy(),可以在这里面进行系统资源释放、数据保存等等操作。

完整的流程如图所示:
在这里插入图片描述

标签:触发,生命周期,鸿蒙,UIAbility,实例,UI,组件,回调
From: https://blog.csdn.net/xuelian3015/article/details/141939337

相关文章

  • D17 kubernetes Pod生命周期
    1、创建pod当创建一个pod时,它是通过多个组件来完成的假设通过kubeletrunnginx--image=ningx命令创建一个pod,其工作流程如下:1、kubectl向APIserver发起创建pod的请求,请求中包含pod的配置信息2、APIserver接收到请求后,校验字段合法性,例如格式、镜像地址不能为空等,校验通......
  • D16 kubernetes 容器生命周期回调
    1、简介容器生命周期回调是指在容器的生命周期中执行用户定义的操作。kubernetes支持以下生命周期回调PostStart(容器启动后):在容器启动后立即执行的回调,它可以用于执行一些初始化任务PreStop(容器停止前):在容器停止之前执行的回调。它可以用于执行清理或保存状态的操作......
  • 鸿蒙OS试题
    关于静态检查描述错误的是:A.静态检查可以检测代码中的语法错误和潜在的逻辑错误,也支持检测代码在运行时现的错误,因此静态检查可以替代动态测试。B.静态检查是指使用静态代码分析工具对软件的“静态"(不运行的)代码进行分析的一种方法,找出代码中潜在的漏洞。静态代码分析器......
  • 鸿蒙OS试题
    hiAppEvent提供的Watcher接口,()属性不配置,会导致编译报错,产生"ArkTSCompilerError".A.onReceiveB.triggerConditionC.onTriggerD.name在ArkTs中以下哪些属性的声明是错误的classc{}letvalue1:number=null;letvalue2:stringlnull=null;letvalue3:strin......
  • Maven超详细教程(二):Maven 生命周期管理详解
    Maven作为Java开发者广泛使用的项目管理工具,其核心特性之一就是其强大的生命周期管理。Maven生命周期定义了一系列有序的阶段(phases),每个阶段都可以绑定特定的插件(plugins)和目标(goals),以实现项目的构建、测试、打包、部署等任务。本文将详细梳理Maven的主要生命周期、各个......
  • 鸿蒙南向 - 系统信息修改
    开机logodevice-board-hihope-rk3568-kernel替换logo_kernel.bmp和logo.bmp文件开机动画4.0以后foundation-graphic-gtaphic_2D-frameworks-bootanimation-data修改bootvideo.mp4文件,bootsound.wav文件3.2版本修改bootpic.zip文件,每一帧图片,150帧设备......
  • 鸿蒙(HarmonyOS)北向开发知识点记录~
    北向开发的目标是为鸿蒙生态系统构建丰富多样的应用程序,满足用户在不同场景下的需求。通过北向开发,开发者可以充分利用鸿蒙操作系统的独特优势和强大功能,为用户带来全新的体验,同时也为自身创造更多的商业机会和价值。开发技术与特点1.分布式技术:鸿蒙操作系统的一大特色是......
  • 鸿蒙应用ArkTS开发-实现登录注册功能
     引言:小编也是最近学习的鸿蒙应用开发,把自己的学习心得想法和大家交流,一起探讨!一、概述HarmonyOS(鸿蒙操作系统)是华为公司开发的操作系统。它的设计初衷是为了应对当今多设备、多平台(1+8+N)的需求,为各种类型的设备提供一个统一的操作系统。HarmonyOS具有以下几个主要特点:1......
  • Flutter仿京东商城项目:‌支持最新的Flutter 3.x及鸿蒙OS
    Flutter仿京东商城项目:‌支持最新的Flutter3.x及鸿蒙OS引言Flutter,‌作为谷歌公司推出的一款基于Dart语言的开源移动UI框架,‌因其跨平台、‌高性能的特点,‌迅速在移动开发领域获得广泛关注。‌随着Flutter3.x的发布,‌带来了诸多新特性和改进,‌进一步提升了开发效率和用户体验......
  • 鸿蒙界面开发(12):选项卡布局(Tabs)
    选项卡布局(Tabs)当页面信息较多时,为了让用户能够聚焦于当前显示的内容,需要对页面内容进行分类,提高页面空间利用率。Tabs组件可以在一个页面内快速实现视图内容的切换。基本布局Tabs组件的页面组成包含两个部分,分别是TabContent和TabBar。TabContent是内容页,TabBar是导航......