HarmonyOS鸿蒙Next企业面试之生命周期和你通常在这些生命周期中做些什么?
首先把生命周期函数说一遍:
UIAbility 有 onCreate、onWindowStageCreate 、onForeground、onBackground,等生命周期函数用于自身创建、窗口创建、置为后台、置为前台等阶段。
Page 有 onPageShow、onPageHide 等函数处理页面显示与隐藏等情况,aboutToAppear、aboutToDisappear 等。
组件 onAppear() 组件显示、onAreaChange() 组件变化、onDisappear() 组件销毁。
好的,这是一个非常经典的企业面试题。下面我为你系统地完善和梳理这个问题的回答,让你能在面试中表现出扎实的理解。
全面完善的回答思路
你可以这样组织你的回答:“关于ArkTS(HarmonyOS)应用的生命周期,我主要从三个层面来理解和处理:UIAbility生命周期、Page页面生命周期 和组件生命周期。不同的生命周期阶段对应不同的职责,我的工作就是在正确的阶段做正确的事情,以确保应用性能良好、行为正确。”
1. UIAbility 生命周期
UIAbility是应用运行的抽象,一个应用可以包含多个UIAbility。它的生命周期是整个应用进程的核心。
-
onCreate()
:- 何时触发:UIAbility实例被创建时触发(首次启动或客户端重新启动该UIAbility)。
- 我通常做什么:在这里执行一些全局的、一次性的初始化工作
-
onWindowStageCreate(windowStage: window.WindowStage)
:- 何时触发:UIAbility实例创建完成后,在进入前台之前,系统为其创建一个主窗口。
- 我通常做什么:配置沉浸式、获取断点值
-
onForeground()
:- 何时触发:UIAbility从后台不可见状态即将回到前台可见状态时触发。
- 我通常做什么:重新开始一些在后台暂停的操作,比如启动动画、继续传感器监听、从服务端获取最新数据等。
-
onBackground()
:- 何时触发:UIAbility即将退到后台不可见状态时触发。
- 我通常做什么:暂停或停止一些不必要的、耗电的操作以节省资源,比如停止动画、暂停视频播放、断开耗时网络连接等
-
onDestroy()
:- 何时触发:UIAbility实例被销毁时。
- 我通常做什么:进行最终的清理工作,解除注册的系统服务、释放内存、关闭持久化连接等
2. Page 页面生命周期
Page是UI显示的单元,一个UIAbility可以包含多个Page。它的生命周期关注页面的显示和隐藏。
-
aboutToAppear()
:- 何时触发:页面即将构建和显示时触发。
- 我通常做什么:请求数据、初始化数据
-
onPageShow()
:- 何时触发:页面完全显示后触发。
- 我通常做什么:比如获取组件的信息(宽度高度)、组件初始化完成后做的一些操作
-
onPageHide()
:- 何时触发:页面即将隐藏时触发。
- 我通常做什么:
- 取消网络请求:取消未完成的异步任务和网络请求,避免不必要的回调和处理。
- 暂停页面活动:暂停页面内的视频播放、计时器等。
-
aboutToDisappear()
:- 何时触发:页面即将销毁或跳转时触发。
- 我通常做什么:
- 数据持久化:将页面的临时数据保存到AppStorage或LocalStorage中,以便下次恢复。
- 资源释放:进行页面级别的资源清理。
3. 组件生命周期 (常用装饰器)
组件(Component)是页面的构成元素,拥有自己的生命周期,主要用于组件自身的状态管理。
-
@Builder
函数中的onAppear()
:- 何时触发:组件首次出现或之前消失后又重新出现时。
- 我通常做什么:执行组件特定的初始化,比如开始一个组件独有的动画。
-
@Builder
函数中的onDisappear()
:- 何时触发:组件从页面中消失时。
- 我通常做什么:停止组件相关的活动,如清除定时器、停止动画。
-
onAreaChange()
:- 何时触发:组件尺寸、位置发生变化时。
- 我通常做什么:通常用于实现自定义布局或响应式UI,根据组件的新尺寸动态调整内部子组件的布局。
更多关于HarmonyOS鸿蒙Next企业面试之生命周期和你通常在这些生命周期中做些什么?的实战教程也可以访问 https://www.itying.com/category-93-b0.html