首页 > 其他分享 >UIAbility组件生命周期

UIAbility组件生命周期

时间:2024-11-07 21:46:20浏览次数:1  
标签:状态 生命周期 WindowStage UIAbility 实例 UI 组件 回调

当用户打开、切换和返回到对应应用时,应用中的UIAbility实例会在其生命周期的不同状态之间转换。UIAbility类提供了一系列回调,通过这些回调可以知道当前UIAbility实例的某个状态发生改变,会经过UIAbility实例的创建和销毁,或者UIAbility实例发生了前后台的状态切换。

UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态,如下图所示
img1

Create状态

Create状态为在应用加载过程中,UIAbility实例创建完成时触发,系统会调用onCreate()回调。可以在该回调中进行页面初始化操作,例如变量定义资源加载等,用于后续的UI展示

WindowStageCreate和WindowStageDestroy状态

UIAbility实例创建完成之后,在进入Foreground之前,系统会创建一个WindowStage。WindowStage创建完成后会进入onWindowStageCreate()回调,可以在该回调中设置UI加载、设置WindowStage的事件订阅
img2
在onWindowStageCreate()回调中通过loadContent()方法设置应用要加载的页面,并根据需要调用on('windowStageEvent')方法订阅WindowStage的事件(获焦/失焦、切到前台/切到后台、前台可交互/前台不可交互)。对应于onWindowStageCreate()回调。在UIAbility实例销毁之前,则会先进入onWindowStageDestroy()回调,可以在该回调中释放UI资源。对应onWindowStageWillDestroy()回调,在WindowStage销毁前执行,此时WindowStage可以使用。

Foreground和Background状态

Foreground和Background状态分别在UIAbility实例切换至前台和切换至后台时触发,对应于onForeground()回调和onBackground()回调。

onForeground()回调,在UIAbility的UI可见之前,如UIAbility切换至前台时触发。可以在onForeground()回调中申请系统需要的资源,或者重新申请在onBackground()中释放的资源。

onBackground()回调,在UIAbility的UI完全不可见之后,如UIAbility切换至后台时候触发。可以在onBackground()回调中释放UI不可见时无用的资源,或者在此回调中执行较为耗时的操作,例如状态保存等。

当应用的UIAbility实例已创建,且UIAbility配置为singleton启动模式时,再次调用startAbility()方法启动该UIAbility实例时,只会进入该UIAbility的onNewWant()回调,不会进入其onCreate()和onWindowStageCreate()生命周期回调。应用可以在该回调中更新要加载的资源和数据等,用于后续的UI展示。

Destroy状态

Destroy状态在UIAbility实例销毁时触发。可以在onDestroy()回调中进行系统资源的释放、数据的保存等操作。

标签:状态,生命周期,WindowStage,UIAbility,实例,UI,组件,回调
From: https://www.cnblogs.com/zhaloe/p/18534085

相关文章

  • vue项目滑动验证组件
    父组件---表单部分:<el-form-itemprop="phone"style="margin-top:6%"><el-inputv-model="ruleForm.phone"placeholder="请输入手机号"clearable:readonly="st......
  • 鸿蒙开发进阶(HarmonyOS)使用通话设备切换组件
     鸿蒙NEXT开发实战往期必看文章:一分钟了解”纯血版!鸿蒙HarmonyOSNext应用开发!“非常详细的”鸿蒙HarmonyOSNext应用开发学习路线!(从零基础入门到精通)HarmonyOSNEXT应用开发案例实践总结合(持续更新......)HarmonyOSNEXT应用开发性能优化实践总结(持续更新......)基本概......
  • angular组件间的数据输出——output
    原文链接:angular组件间的数据输出——output–每天进步一点点0.背景上一篇文章,我们简单介绍的是Input的用法,这篇文章,我们继续介绍一下Output的用法。需要注意的是是Output表示子组件向父组件传递数据。图示如下:在本文中:StudentComponent是子组件,AppComponent是父组件。父......
  • angular组件间的数据输入——input
    原文链接:angular组件间的数据输入——input–每天进步一点点0.背景我们前面一篇文章简单介绍了angular如何引用其他组件,这篇文章简单介绍一下angualr组件之间如何传输数据。一个使用场景:我们定义了一个学生组件,学生有自己的姓名、年龄,语文成绩、数学成绩、英语成绩,然后其他......
  • Web组件和WebView 习题答案 <HarmonyOS第一课>
    一、判断题1. Web组件提供具有网页显示能力,@ohos.web.webview提供web控制能力。正确(True)错误(False)回答正确A2. 同一页面的多个Web组件,必须绑定不同的WebviewController。正确(True)错误(False)回答正确A二、单选题1. 下列关于Web组件的属性,描述错误的是?A.......
  • 『玩转Streamlit』--文本与标题组件
    本篇准备开始介绍Streamlit的组件。Streamlit的组件非常多,后续几篇打算按照用途的分类,介绍每个分类中最常用的组件。本次从最简单的组件开始,介绍文本和标题相关的组件,也就是以下4个组件:st.text:用于显示普通的文本内容st.title:用于显示页面的大标题st.header:用于显示一级标题......
  • STLC生命周期
    软件生命周期软件生命周期(STLC)包含测试过程中执行的一系列特定活动,已确保达到软件质量目标。STLC包含验证和确认的行为,软件测试不是一个相对独立的活动,它包含一系列通过方法论验证软件产品的活动。STLC每个软件测试生命周期模型(STLC模型)都包含六个阶段:需求分析测试计划测......
  • Avalonia封装实现指定组件允许拖动的工具类
    创建Avalonia的MVVM项目,命名DragDemo,然后将项目的Nuget包更新到预览版 12345678<ItemGroup>        <PackageReferenceInclude="Avalonia"Version="11.0.0-preview5"/>        <PackageReferenceInclude="Avalonia.Desktop&qu......
  • [vant] 最新版使用vw布局+vant组件库兼容方案
    1.安装vw插件npmipostcss-px-to-viewport-8-plugin--save-dev2.配置vite.config.jsimport{defineConfig}from'vite'importvuefrom'@vitejs/plugin-vue'importAutoImportfrom'unplugin-auto-import/vite';importComponen......
  • 高阶组件怎么实现?
    高阶组件(Higher-OrderComponent,HOC)是一种在React中用于重用组件逻辑的模式。它本质上是一个接收一个组件作为参数,并返回一个新的包装组件的函数。以下是一个示例代码,演示了如何实现一个简单的高阶组件:jsximportReactfrom"react";//定义一个高阶组件函数constwithB......