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

【ArkUI】简述 UIAbility 组件的生命周期、启动模式和基本用法

一、UIAbility 组件概述UIAbility 组件是一种包含 UI 的应用组件,主要用于和用户交互。例如,图库类应用可以在 UIAbility 组件中展示图片瀑布流。UIAbility 的设计理念是:支持应用组件级的跨端迁移和多端协同。支持多设备和多窗口形态。UIAbility 组件是系统调度的基本单元,为应用提供绘制界面的窗口。一个应用可以包含一个或多个 UIAbility 组件。例如,在支付应用中,可以将入口功能和收付款功能分别配置为独立的UIAbility。每一个 UIAbility 组件实例都会在最近任务列表中显示一个对应的任务。任务视图用于快速查看和管理当前设备上运行的所有任务或应用。1、划分原则可以根据具体场景选择单个还是多个 UIAbility。如果开发者希望在任务视图中看到一个任务,建议使用“一个 UIAbility + 多个页面”的方式,可以避免不必要的资源加载。如果开发者希望在任务视图中看到多个任务,或者需要同时开启多个窗口,建议使用多个 UIAbility 实现不同的功能。例如,即时通讯类应用中的消息列表与音视频通话采用不同的 UIAbility 进行开发,既可以方便地切换任务窗口,又可以实现应用的两个任务窗口在一个屏幕上分屏显示。2、声明配置为使应用能够正常使用 UIAbility,需要在模块级的 module.json5 配置文件的 abilities 标签中声明 UIAbility 的名称、入口、标签等相关信息。{"module":{// ···"abilities":[{"name":"EntryAbility",// UIAbility组件的名称"srcEntry":"./ets/entryability/EntryAbility.ets",// UIAbility组件的代码路径"description":"$string:EntryAbility_desc",// UIAbility组件的描述信息"icon":"$media:layered_image",// UIAbility组件的图标"label":"$string:EntryAbility_label",// UIAbility组件对用户显示的名称"startWindowIcon":"$media:startIcon",// UIAbility组件启动页面图标资源文件的索引"startWindowBackground":"$color:start_window_background",// UIAbility组件启动页面背景颜色资源文件的索引// ···}]// ···}}二、UIAbility 组件生命周期当用户在执行应用启动、应用前后台切换、应用退出等操作时,系统会触发相关应用组件的生命周期回调。UIAbility 组件的核心生命周期回调包括onCreate、onForeground、onBackground、onDestroy。作为一种包含 UI 的应用组件,UIAbility 的生命周期不可避免地与WindowStage 的生命周期存在关联关系。1、UIAbility 启动到前台场景当用户启动一个 UIAbility 时,系统会依次触发onCreate()、onWindowStageCreate()、onForeground()生命周期回调。当用户跳转到其他应用(当前 UIAbility 切换到后台)时,系统会触发onBackground()生命周期回调。当用户再次将 UIAbility 切换到前台时,系统会依次触发onNewWant()、onForeground()生命周期回调。2、UIAbility 启动到后台场景当用户通过 UIAbilityContext.startAbilityByCall() 接口启动一个 UIAbility 到后台时,系统会依次触发onCreate()、onBackground()(不会执行 onWindowStageCreate() 生命周期回调)生命周期回调。当用户将 UIAbility 拉到前台,系统会依次触发onNewWant()、onWindowStageCreate()、onForeground()生命周期回调。3、生命周期回调生命周期回调是在应用主线程执行,为了确保应用性能,建议在生命周期回调中,仅执行必要的轻量级操作。对于耗时任务,推荐采用异步处理或交由子线程执行,避免阻塞主线程。如果需要感知 UIAbility 生命周期变化,开发者可以使用 ApplicationContext 注册接口监听 UIAbility 生命周期变化。(1)onCreate()在首次创建UIAbility 实例时,系统触发 onCreate() 回调。开发者可以在该回调中执行 UIAbility整个生命周期中仅发生一次的启动逻辑。(2)onWindowStageCreate()UIAbility 实例创建完成之后,在进入前台之前,系统会创建一个 WindowStage。WindowStage 创建完成后会进入 onWindowStageCreate() 回调,开发者可以在该回调中进行 UI 加载、WindowStage 的事件订阅。在 onWindowStageCreate() 回调中通过loadContent() 方法设置应用要加载的页面。根据需要调用on(‘windowStageEvent’) 方法订阅 WindowStage 的事件(获焦/失焦、切到前台/切到后台、前台可交互/前台不可交互)。(3)onForeground()在 UIAbility 切换至前台时且 UIAbility 的 UI 可见之前,系统触发 onForeground 回调。开发者可以在该回调中申请系统需要的资源,或者重新申请在 onBackground() 中释放的资源。系统回调该方法后,UIAbility 实例进入前台状态,即 UIAbility 实例可以与用户交互的状态。UIAbility 实例会一直处于这个状态,直到被某些动作打断(例如屏幕关闭、用户跳转到其他 UIAbility)。例如,应用已获得地理位置权限。在UI显示之前,开发者可以在onForeground()回调中开启定位功能,从而获取到当前的位置信息。(4)onBackground()在 UIAbility 的 UI 完全不可见之后,系统触发 onBackground 回调,将 UIAbility 实例切换至后台状态。开发者可以在该回调中释放UI不可见时的无用资源,例如停止定位功能,以节省系统的资源消耗。onBackground() 执行时间较短,无法提供足够的时间做一些耗时动作。请勿在该方法中执行保存用户数据或执行数据库事务等耗时操作。(5)onWindowStageWillDestroy()在 UIAbility 实例销毁之前,系统触发 onWindowStageWillDestroy() 回调。该回调在 WindowStage 销毁前执行,此时 WindowStage 可以使用。开发者可以在该回调中释放通过 WindowStage 获取的资源、注销 WindowStage 事件订阅等。(6)onWindowStageDestroy()在 UIAbility 实例销毁之前,系统触发 onWindowStageDestroy() 回调,开发者可以在该回调中释放 UI 资源。该回调在 WindowStage 销毁后执行,此时 WindowStage 不可以使用。(7)onDestroy()在 UIAbility 实例销毁之前,系统触发 onDestroy 回调。该回调是 UIAbility 接收到的最后一个生命周期回调,开发者可以在 onDestroy() 回调中进行系统资源的释放、数据的保存等操作。例如,开发者调用 terminateSelf() 方法通知系统停止当前 UIAbility 实例时,系统会触发 onDestroy() 回调。从 API version 13 开始,用户在最近任务列表中使用一键清理来关闭应用,对于无实况窗的应用将不会触发 onDestroy() 回调,而是会直接终止进程;对于有实况窗的应用会继续触发 onDestroy() 回调。当在开发者模式下调试某个应用时,如果用户从最近任务列表中移除了该调试应用的一个任务,则该调试应用的进程会被强制销毁,不会触发 onDestroy() 回调。(8)onNewWant()当应用的UIAbility实例已创建,再次调用方法启动该UIAbility实例时,系统触发该UIAbility的onNewWant()回调。开发者可以在该回调中更新要加载的资源和数据等,用于后续的UI展示。(9)示例代码import{AbilityConstant,ConfigurationConstant,UIAbility,Want}from'@kit.AbilityKit';import{hilog}from'@kit.PerformanceAnalysisKit';import{window}from'@kit.ArkUI';constDOMAIN=0x0000;exportdefaultclassEntryAbilityextendsUIAbility{onCreate(want:Want,launchParam:AbilityConstant.LaunchParam):void{// 执行UIAbility整个生命周期中仅发生一次的业务逻辑try{this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET);}catch(

相关文章:

【ArkUI】简述 UIAbility 组件的生命周期、启动模式和基本用法

一、UIAbility 组件概述 UIAbility 组件是一种包含 UI 的应用组件,主要用于和用户交互。例如,图库类应用可以在 UIAbility 组件中展示图片瀑布流。 UIAbility 的设计理念是:支持应用组件级的跨端迁移和多端协同。支持多设备和多窗口形态。 UIAbility 组件是系统调度的基本单…...

基于机器视觉的苹果品质分级系统的设计与实现

前言 在对苹果品质进行分级时经常应用到的技术是机器视觉技术,此技术在当前的应用中已经逐渐成为最关键的检测方法之一。机器视觉技术由于受到图像处理技术的支持在苹果品质品质检测方面更加科学与专业,由此在以后的技术应用与发展中越来越有发展前途。 …...

智慧树自动刷课插件:3步实现无人值守学习

智慧树自动刷课插件:3步实现无人值守学习 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台的网课进度烦恼吗?智慧树自动刷课插件…...

FPGA新手避坑指南:手把手教你搞定RTL8211千兆网PHY的时序配置(附Verilog代码)

FPGA实战:RTL8211千兆网PHY时序配置全解析与避坑指南 刚接触FPGA与以太网通信的开发者,十有八九会在RTL8211这类千兆网PHY芯片上栽跟头——硬件连接看似正确,代码逻辑反复检查无误,但网络就是不通,或者频繁丢包。这往往…...

3分钟实现GitHub界面本地化:开源界面翻译工具的完整指南

3分钟实现GitHub界面本地化:开源界面翻译工具的完整指南 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 还在为GitHub的英…...

移动端电量优化技巧

移动端电量优化技巧:让你的手机续航更持久 在移动互联网时代,智能手机已经成为我们生活中不可或缺的一部分。随着应用功能的丰富和屏幕亮度的提升,电池续航问题也日益突出。如何在不影响使用体验的前提下,有效延长手机续航时间&a…...

移动端架构演进

移动端架构演进:从简单到智能的蜕变 移动互联网的飞速发展,推动了移动端架构的持续演进。从早期的单一功能应用,到如今复杂的智能化平台,移动端架构经历了多次重大变革。每一次演进不仅提升了开发效率和应用性能,也为…...

org.openpnp.vision.pipeline.stages.DetectLinesHough

文章目录org.openpnp.vision.pipeline.stages.DetectLinesHough功能参数例子测试图像generate_line_test_image.pycv-pipeline效果ENDorg.openpnp.vision.pipeline.stages.DetectLinesHough 功能 在图像中检测直线段 在DetectLinesHough之前,需要执行DetectEdgesC…...

【稀缺首发】SITS2026圆桌闭门纪要:全球仅12家机构获准验证的多模态推理新范式(含3项未公开Benchmark数据)

第一章:SITS2026圆桌:多模态大模型未来趋势 2026奇点智能技术大会(https://ml-summit.org) 在SITS2026圆桌论坛中,来自Meta、DeepMind、中科院自动化所与上海AI Lab的七位首席科学家共同指出:多模态大模型正从“跨模态对齐”迈向…...

LangChain、LangGraph入门

本文主要是基于学习的datawhale关于langchain、langgraoh课程,记录的学习过程与个人看法。 安装依赖 安装langchain、langgraph、openai依赖及用于管理环境变量(python-dotenv)的辅助依赖 pip install langchain langgraph openai langchain_openai python-doten…...

org.openpnp.vision.pipeline.stages.DetectFixedCirclesHough

文章目录org.openpnp.vision.pipeline.stages.DetectFixedCirclesHough功能参数固定参数(在 XML 中配置)动态参数(必须通过 pipeline.setProperty() 预先设置)例子效果ENDorg.openpnp.vision.pipeline.stages.DetectFixedCirclesH…...

Nanbeige4.1-3B应用场景:制造业设备维修手册QA系统,支持PDF/图片OCR混合输入

Nanbeige4.1-3B应用场景:制造业设备维修手册QA系统,支持PDF/图片OCR混合输入 想象一下这个场景:车间里一台关键设备突然报警停机,维修工程师小王满头大汗地翻着一本厚厚的纸质维修手册,试图从几百页里找到对应的故障代…...

亚洲美女-造相Z-Turbo创意工坊案例:独立艺术家用其生成NFT系列《东方十二时辰》

亚洲美女-造相Z-Turbo创意工坊案例:独立艺术家用其生成NFT系列《东方十二时辰》 1. 项目背景与价值 在数字艺术创作领域,AI图像生成技术正在改变传统创作方式。亚洲美女-造相Z-Turbo作为一个专门针对亚洲女性形象生成的AI模型,为艺术家提供…...

UiPath003 创建基本库

以下教程将引导您完成在 Studio 中创建库,发布库并在其他自动化项目中使用库的步骤。 创建库与创建基本流程类似。区别在于,库是一个包含可重用组件的包,这些组件可以在其他项目的上下文中使用。 本示例从 Excel 电子表格获取数据&#xff0c…...

AI人体骨骼关键点检测作品集:多场景骨架图生成,效果直观一目了然

AI人体骨骼关键点检测作品集:多场景骨架图生成,效果直观一目了然 1. 引言 1.1 技术亮点展示 今天我要带大家看一组令人惊艳的AI骨骼检测作品集。基于Google MediaPipe Pose模型,这套系统能在毫秒级时间内精准定位人体33个关键点&#xff0…...

RT-DETR实战入门:从零搭建PyTorch训练环境与数据准备

1. RT-DETR简介与环境配置 RT-DETR是百度最新推出的实时目标检测模型,基于Transformer架构设计,在速度和精度上都有不错的表现。相比传统的YOLO系列,RT-DETR采用了更先进的注意力机制,能够更好地处理复杂场景中的目标检测任务。对…...

Java学习笔记_Day30(File)

FileFile对象就表示一个路径,可以是文件的路径,也可以是文件夹的路径这个路径可以是存在的,也可以是不存在的三种构造方法常见的成员方法1.判断和获取2.创建和删除3.获取并遍历当调用者File表示的路径不存在时,返回null当调用者Fi…...

嵌入式系统课程设计:基于STM32和CLIP-GmP-ViT-L-14的智能分类垃圾桶

嵌入式系统课程设计:基于STM32和CLIP-GmP-ViT-L-14的智能分类垃圾桶 1. 项目缘起:一个有趣又实用的想法 你有没有想过,家里的垃圾桶要是能自己“认”垃圾就好了?可回收的瓶子扔进去,它自动打开可回收桶的盖子&#x…...

【移动端知识,vw单位适配

移动端知识移动端不需要设置版心物料像素和css像素物料像素css像素物料像素和css像素的关系设计稿都是按物理像素给的,我们开发的时候要写css像素,所以要改总结实现移动端适配方案vw单位适配vw和vh的介绍一直占页面宽度和高度的一半移动端适配...

ollama部署本地大模型|granite-4.0-h-350m在新闻聚合平台摘要生成落地

ollama部署本地大模型|granite-4.0-h-350m在新闻聚合平台摘要生成落地 1. 引言:当新闻摘要遇上轻量级AI 每天,新闻聚合平台的后台都会涌入成千上万条信息。编辑团队需要快速浏览、提炼、生成摘要,这不仅是体力活,更是…...

基于深度学习的车辆测距识别 yolov8双目测距 yolov8+sgbm(原理+代码)

YOLOv8结合SGBM立体匹配算法进行双目测距的工作流程和原理主要包括以下几个核心步骤: 往期热门博客项目回顾: 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yo…...

终极Windows优化指南:3分钟用Win11Debloat释放系统性能

终极Windows优化指南:3分钟用Win11Debloat释放系统性能 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and c…...

Qwen3-32B长文本处理实战:128K上下文,轻松分析整本电子书

Qwen3-32B长文本处理实战:128K上下文,轻松分析整本电子书 你是否曾经需要分析一本300页的技术文档,却苦于找不到合适的工具?或者尝试用AI处理长文本时,发现模型总是"忘记"前半部分的内容?这些痛…...

电赛核心科技:拆解卡尔曼滤波与姿态解算

前言: 在电赛的控制类题目(如平衡小车、倒立摆、无人机)中,获取精准的姿态角是所有控制逻辑的基石。很多同学在串口助手看到 MPU6050 的原始数据时,往往会陷入绝望:数据要么满屏噪声,要么随时间…...

Ostrakon-VL-8B详细步骤:查看llm.log日志、验证加载状态、发起首轮提问

Ostrakon-VL-8B详细步骤:查看llm.log日志、验证加载状态、发起首轮提问 1. 从零开始:认识Ostrakon-VL-8B图文对话模型 如果你正在寻找一个专门为零售和餐饮场景设计的智能助手,那么Ostrakon-VL-8B绝对值得你花时间了解。这是一个开箱即用的…...

Phi-4-mini-reasoning惊艳效果展示:高精度数学推导+代码生成对比实测

Phi-4-mini-reasoning惊艳效果展示:高精度数学推导代码生成对比实测 1. 开篇:小模型的大智慧 Phi-4-mini-reasoning这款仅有3.8B参数的轻量级开源模型,正在重新定义我们对小型语言模型能力的认知。专为数学推理、逻辑推导和多步解题等强逻辑…...

SUPER COLORIZER作品集:从经典素描到赛博朋克的风格化上色展示

SUPER COLORIZER作品集:从经典素描到赛博朋克的风格化上色展示 你有没有想过,一张简单的黑白线稿,能在几秒钟内变成一幅充满未来感的赛博朋克画作,或者一幅意境深远的水墨画?这听起来像是专业画师的工作,但…...

JS逆向|猿人学逆向反混淆练习平台第13题加密分析

关注它,不迷路。本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除!一.题目地址https://match.yuanrenxue.cn/match/13二.抓包分析先打开控制台&…...

MySQL8.0升级到MySQL8.4避坑:密码插件问题

对于广大运维和DBA来说,MySQL8.0即将结束官方支持(EOL)已经是板上钉钉的事。按照Oracle官方的版本生命周期策略,MySQL8.0的常规支持周期逐步收尾,后续仅保留有限的安全修复,不再提供功能更新与全面技术支持…...

【CVPR26-马连博-东北大学】面向增量式统一多模态异常检测:基于信息瓶颈视角增强多模态去噪

文章:Towards an Incremental Unified Multimodal Anomaly Detection: Augmenting Multimodal Denoising From an Information Bottleneck Perspective代码:https://github.com/longkaifang/IB-IUMAD单位:东北大学一、问题背景在工业质检场景…...