八卦阵 发表于 2025-1-10 19:56:04

HarmonyOs DevEco Studio小技巧28--部分鸿蒙生命周期详解

目录

前言 
页面和自界说组件生命周期
页面生命周期
onPageShow --- 表现页面已经表现 
onPageHide --- 表现页面已经隐蔽
onBackPress --- 表现用户点击了返回键
组件生命周期
aboutToAppear --- 表现组件即将出现
onDidBuild --- 表现组件已经构建完成
aboutToDisappear --- 表现组件即将消失
aboutToReuse --- 表现组件即将被重用
aboutToRecycle --- 表现组件即将被回收
onWillApplyTheme --- 表现组件即将应用主题
UIAbility组件的生命周期
onCreate --- 会在组件创建时被调用
onDestroy --- 会在组件烧毁时被调用
onWindowStageCreate --- 会在窗口阶段创建时被调用
onWindowStageWillDestroy --- 函数会在窗口阶段即将被烧毁时被调用
onWindowStageDestroy--- 会在窗口阶段烧毁时被调用
onWindowStageRestore --- 是在窗口恢复时调用
onForeground --- 会在组件进入前台时被调用
onBackground --- 会在组件进入背景时被调用
onContinue --- 是在应用继续运行时调用
onNewWant --- 会在组件吸收到新的哀求时被调用
onDump --- 是在应用被 dump 时调用
onSaveState --- 是在应用生存状态时调用
onPrepareToTerminate --- 是在应用预备终止时调用
onShare --- 是在应用分享时调用
onBackPressed ---  是在用户按下返回键时调用。
Navigation 的生命周期
onWillAppear --- 会在组件即将出现时被调用
onAppear --- 会在组件出现时被调用
onWillShow --- 会在组件即将表现时被调用
onShown --- 会在组件表现时被调用
onWillHidede --- 会在组件即将隐蔽时被调用
onHidden --- 会在组件隐蔽时被调用
onWillDisappear --- 会在组件即将消失时被调用
onDisappear --- 会在组件消失时被调用
onBackPressed --- 会在用户按下返回键时被调用


前言 

   生命周期是什么?
个人理解:生命周期就是一个由新生到死亡的过程。
以人来举例子:
诞生前
人从受精卵开始,在妈妈肚子里履历胚胎和胎儿阶段,这是生命的起始孕育。
婴儿幼儿期
弱小需照顾,靠吃睡发展。学走路、语言,爱探索。
童年期青春期
上学学知识,社交渐广身体和生理有大变革。
成年期
负担工作、家庭等责任,创造价值。
老年期
身体机能衰退,但也能积极生活。
死亡
末了死亡,竣事一生的生命周期。

https://i-blog.csdnimg.cn/direct/4f45eed8af0e42fba8b338ba2f91ed74.jpeg
在鸿蒙开发中,生命周期主要是指鸿蒙应用内各类组件从创建到烧毁所履历的一系列阶段及在各阶段相应的处理机制。
比方:当我们创建一个对象时,就会调用它的构造函数,这个函数就是对象的“出生”时间。在对象的生命周期中,我们可以通过调用它的方法来改变它的状态,也可以通过调用它的析构函数来释放它占用的资源,这个函数就是对象的“死亡”时间。
生命周期的主要作用包罗:

[*] 资源管理:在合适的阶段分配和释放资源,比如在组件创建时初始化所需资源,在组件烧毁时释放不再使用的资源,避免内存走漏和提高性能。
[*] 数据处理:在特定阶段加载或更新数据。比方,在组件表现时获取最新数据,在组件隐蔽时停息数据更新操纵。
[*] 状态维护:根据组件的不同状态进行相应的处理,以包管组件的活动和表现符适用户的预期。
页面和自界说组件生命周期



[*] 自界说组件:@Component装饰的UI单元,可以组合多个系统组件实现UI的复用,可以调用组件的生命周期。
[*] 页面:即应用的UI页面。可以由一个或者多个自界说组件组成,@Entry装饰的自界说组件为页面的入口组件,即页面的根节点,一个页面有且仅能有一个@Entry。只有被@Entry装饰的组件才可以调用页面的生命周期。
页面生命周期

onPageShow --- 表现页面已经表现 



[*]含义:onPageShow 这个函数的作用是用于指示页面已经成功表现出来了。每当页面履历表现操纵时,该函数就会被触发一次。这里所说的表现场景比力广泛,比如在应用内进行页面之间的路由切换,当切换到目的页面且该页面完备表现时,onPageShow 会被触发;别的,当整个应用从背景状态重新进入前台,使得相关页面再次出现给用户时,此函数同样会被触发。必要注意的是,它的收效范围是仅限于被 @Entry 装饰的自界说组件,也就是说只有这类特定的组件地点的页面在表现相关情况发生时,才会执行 onPageShow 函数内的逻辑。
[*]示例场景:假设在一个手机购物应用中,用户从商品列表页通过点击某个商品进入商品详情页,当商品详情页完备表现出来后,若商品详情页的组件是被 @Entry 装饰的自界说组件,那么 onPageShow 就会被触发。此时可以在这个函数里进行一些操纵,比如更新页面上某些元素的表现状态(如将某个加载动画隐蔽,表实际际的商品图片等),或者发送一个统计变乱告知服务器该商品详情页已成功展示给用户等。
onPageHide --- 表现页面已经隐蔽



[*]含义:onPageHide 函数则是用于表明页面已经进入隐蔽状态了。与 onPageShow 相对应,每当页面发生隐蔽操纵时,该函数就会被触发一次。其隐蔽场景同样涵盖多种情况,比方在应用内进行页面路由切换,当从当前页面切换到其他页面,导致当前页面隐蔽时,onPageHide 会被触发;当整个应用从前台进入背景,使得相关页面不再可见时,此函数也会被触发。同样要注意的是,它也仅对被 @Entry 装饰的自界说组件收效,即只有这类组件地点的页面隐蔽时,才会执行 onPageHide 函数内的逻辑。
[*]示例场景:继续以手机购物应用为例,当用户在商品详情页点击 “返回” 按钮回到商品列表页时,商品详情页就会隐蔽。若商品详情页的组件是被 @Entry 装饰的自界说组件,那么 onPageHide 就会被触发。在这个函数里,可以进行一些清理操纵,比如停息一些与该页面相关的定时器(如果有的话),或者释放一些该页面占用的暂时资源等,因为页面暂时不必要展示了。
onBackPress --- 表现用户点击了返回键



[*]含义:onBackPress 函数主要是在用户点击了返回按钮的情况下被触发。它仅针对被 @Entry 装饰的自界说组件收效。当这个函数被触发后,根据它的返回值来决定后续的页面处理逻辑。如果返回值为 true,这意味着页面自身会处理返回逻辑,此时不会进行通例的页面路由操纵;而如果返回值为 false,那么就会接纳默认的路由返回逻辑来处理页面的返回情况。而且必要注意的是,如果在函数中不设置返回值,那么系统会按照 false 来进行处理。
[*]示例场景:在一个消息阅读应用中,用户在阅读一篇消息文章时,页面是由被 @Entry 装饰的自界说组件构成的。当用户点击手机上的返回按钮时,onBackPress 就会被触发。如果开发者盼望在用户点击返回按钮时,弹出一个提示框扣问用户是否真的要离开当前文章页面(即页面本身处理返回逻辑),那么在 onBackPress 函数中可以设置返回值为 true,然后在函数内部实现弹出提示框等相关操纵。如果开发者不想做特殊处理,只想让页面按照默认的路由返回逻辑返回(比如直接回到上一个浏览过的页面),那么可以让 onBackPress 函数返回 false,或者干脆不设置返回值,系统就会按照默认的方式处理返回情况。
组件生命周期

aboutToAppear --- 表现组件即将出现



[*]含义:aboutToAppear 函数用于指示组件即将出现在界面上。它的执行机遇是在创建自界说组件的新实例之后,但在执行该组件的 build () 函数之前。这个阶段允许在函数内对状态变量进行修改,而且所做的更改会在后续执行 build () 函数时收效,从而影响组件最终出现的样子。对于实现自界说布局的自界说组件,其 aboutToAppear 生命周期会在布局过程中被触发,进一步参与到组件布局相关的预备工作中。
[*]示例场景:假设正在开发一个音乐播放应用,有一个自界说的播放列表组件。当用户切换到包含该播放列表组件的页面时,在创建这个播放列表组件的新实例后,aboutToAppear 函数就会被触发。此时,如果想要根据用户之前的播放偏好(比如前次播放的音乐类型)来预先设置一些状态变量,就可以在 aboutToAppear 函数中进行操纵。比如设置一个状态变量来决定是否默认展开某个特定音乐类型的播放列表分组,这些设置会在后续执行 build () 函数构建组件时收效,使得播放列表组件以符适用户偏好的状态出现出来。
onDidBuild --- 表现组件已经构建完成



[*]含义:onDidBuild 函数表明组件已经完成构建。它的执行机遇是在执行完自界说组件的 build () 函数之后。必要注意的是,不发起在这个函数中更改状态变量或者使用如 animateTo 等功能,因为如许做可能会导致不稳固的 UI 表现,比如出现界面闪烁、组件布局错乱等标题。
[*]示例场景:继续以音乐播放应用中的播放列表组件为例,当 build () 函数完成对播放列表组件的构建,将全部的列表项、标题、播放按钮等元素都组装好之后,onDidBuild 函数就会被执行。此时,应该避免在这个函数里进行诸如突然改变某个列表项的表现状态(通过更改状态变量)或者触发一个动画结果(使用 animateTo)等操纵,以免粉碎已经构建好的稳固的组件出现结果。
aboutToDisappear --- 表现组件即将消失



[*]含义:aboutToDisappear 函数用于表现组件即将消失,其执行机遇是在自界说组件析构烧毁时。在这个函数中,不允许改变状态变量,尤其是对 @Link 变量的修改更是要严酷禁止,因为如许的修改可能会导致整个应用程序的活动变得不稳固,比如出现数据不同等、界面异常等情况。
[*]示例场景:在上述音乐播放应用中,如果用户从包含播放列表组件的页面切换到其他页面,导致播放列表组件不再必要展示并即将被析构烧毁时,aboutToDisappear 函数就会被执行。此时,即使发现有一些数据似乎必要更新(比如播放列表的更新计数),也不能在这个函数里去改变相关的状态变量,要包管组件能够安稳地退出界面而不引发后续的标题。
aboutToReuse --- 表现组件即将被重用



[*]含义:aboutToReuse 函数表现组件即将被重用。当一个可复用的自界说组件从复用缓存中重新加入到节点树时,就会触发这个生命周期回调,而且会将组件的构造参数传递给 aboutToReuse 函数。这使得组件在被重用时能够根据传递过来的构造参数进行相应的调整和初始化,以适应新的使用场景。
[*]示例场景:假设在一个电商应用中,有一个自界说的商品卡片组件,用于展示商品的图片、名称、价格等信息。当用户在浏览不同商品列表时,这个商品卡片组件是可复用的。当用户从一个商品列表页面切换到另一个商品列表页面,之前在第一个页面使用过的商品卡片组件从复用缓存中重新加入到新页面的节点树时,aboutToReuse 函数就会被触发。此时,会根据新页面的商品信息(作为构造参数)来重新初始化商品卡片组件,比如更新图片、名称、价格等展示内容,使其能够准确地展示新的商品信息。
aboutToRecycle --- 表现组件即将被回收



[*]含义:aboutToRecycle 函数表现组件即将被回收。它是组件的生命周期回调,在可复用组件从组件树上被加入到复用缓存之前调用。这个阶段主要是为了在组件被回收之前进行一些必要的清理工作,比如释放一些与组件相关的暂时资源等,以确保组件在被回收后不会遗留一些不必要的占用,影响系统资源的使用效率。
[*]示例场景:仍然以电商应用中的商品卡片组件为例,当用户在一个商品列表页面滚动浏览,使得一些已经展示过的商品卡片组件不再必要展示(比如超出了可视范围)时,这些商品卡片组件就会从组件树上被加入到复用缓存之前,aboutToRecycle 函数就会被触发。此时,可以在这个函数里释放一些与商品卡片组件相关的暂时资源,比如之前为了展示商品图片而分配的缓存内存等,以便更好地使用系统资源。
onWillApplyTheme --- 表现组件即将应用主题



[*]含义:onWillApplyTheme 函数用于表现组件即将应用主题。它的执行机遇是在创建自界说组件的新实例后,在执行其 build () 函数之前,这一点和 aboutToAppear 函数雷同。在这个函数中允许改变状态变量,而且所做的更改会在后续执行 build () 函数时收效,从而使组件能够根据主题相关的设置来调整自身的出现方式。该函数主要用于获取当前组件上下文的 Theme 对象,以便进一步使用主题相关的信息来构建组件。
[*]示例场景:在一个手机主题切换应用中,有各种自界说组件用于展示不同的界面元素。当用户切换主题时,对于每个必要应用新主题的自界说组件,在创建新实例后且在执行 build () 函数之前,onWillApplyTheme 函数就会被触发。比如,若新主题是夜间模式,在 onWillApplyTheme 函数中可以根据夜间模式的特点(如颜色较暗、对比度较低等)来改变一些状态变量,比如设置文本颜色为白色,背景颜色为深色等,这些设置会在后续执行 build () 函数时收效,使得组件能够以符合夜间模式的样子出现出来。
UIAbility组件的生命周期

onCreate --- 会在组件创建时被调用



[*]含义:当 UIAbility 组件被创建时,这个函数就会被调用。具体来说,是在 UIAbility 实例处于完全关闭状态下完成创建操纵后,紧接着进入该生命周期回调。这里主要针对的是 UIAbility 实例的冷启动情况,也就是从完全未运行的状态启动时会进入这个回调。而且它是一个同步接口,意味着它执行完相关操纵后才会继续后续流程,不支持异步回调这种可以先不等候操纵完成绩继续其他任务的方式。
[*]示例场景:比如在一个新安装的手机应用初次打开时,相关的 UIAbility 实例冷启动,onCreate 就会被触发。在这个函数里,可以进行一些初始化的业务逻辑操纵,像初始化全局变量、加载一些基础配置文件、建立与数据库的初始毗连等,为后续组件的正常运行和展示做好预备。
onDestroy --- 会在组件烧毁时被调用



[*]含义:它会在 UIAbility 组件要被烧毁时被调用,属于 UIAbility 生命周期中的一个回调函数。当组件不再必要存在或者应用关闭等情况导致组件必要清理资源并烧毁自身时,就会执行这个回调。它既可以使用同步回调方式,也能通过 Promise 异步回调方式来执行相关的资源清理等操纵。
[*]示例场景:当用户关闭一个应用程序,或者在应用内部某个功能模块使用完毕后必要释放相关 UIAbility 组件所占用的资源时,onDestroy 就会被触发。在这个函数里,可以关闭之前打开的文件流、释放内存中分配给该组件的缓存数据、取消正在进行的网络哀求等,确保资源被合理清理,避免内存走漏等标题。
onWindowStageCreate --- 会在窗口阶段创建时被调用



[*]含义:一旦 WindowStage(可以理解为与窗口相关的一个阶段或对象,用于管理窗口的相关属性和活动)被创建完成,这个函数就会被调用。它主要用于在窗口阶段创建后进行一些与窗口创建相关的初始化操纵或者设置。
[*]示例场景:在一个桌面应用启动并创建主窗口时,当对应窗口的 WindowStage 创建成功后,onWindowStageCreate 就会被触发。可以在这个函数里设置窗口的初始大小、位置、背景颜色等属性,或者初始化窗口内的一些子组件的布局等。
onWindowStageWillDestroy --- 函数会在窗口阶段即将被烧毁时被调用



[*]含义:当 WindowStage 即将被烧毁时,该函数会被调用。这意味着与窗口相关的这个阶段或对象马上要不存在了,通常在窗口关闭或者应用切换到其他不必要当前窗口的场景时会触发这个回调。
[*]示例场景:在一个多窗口的办公应用中,当用户关闭其中一个文档编辑窗口时,在该窗口的 WindowStage 即将被烧毁之前,onWindowStageWillDestroy 就会被执行。可以在这个函数里生存当前窗口内的一些编辑状态信息(如文档的光标位置、当前选中的文本内容等)到本地缓存或者数据库,以便下次打开雷同窗口时能恢复这些状态。
onWindowStageDestroy--- 会在窗口阶段烧毁时被调用



[*]含义:在 WindowStage 已经被烧毁之后,这个函数会被调用。它标记着与窗口相关的这个阶段或对象彻底竣事,相关的窗口资源等也应该已经被清理完毕。
[*]示例场景:继续上面多窗口办公应用关闭文档编辑窗口的例子,当窗口的 WindowStage 真正完成烧毁操纵后,onWindowStageDestroy 就会被触发。此时可以进一步确认一些与窗口相关的资源是否已经全部清理干净,比如释放掉与窗口渲染相关的图形资源等。
onWindowStageRestore --- 是在窗口恢复时调用



[*]含义:当迁徙多实例 ability(可以理解为一种功能或能力单元,在不同场景下可能有不同表现形式)时,而且在恢复 WindowStage 之后,这个函数会被调用。它主要用于在窗口恢复阶段进行一些特定的操纵,以确保窗口能正常展示和运行相关内容。
[*]示例场景:在一个云桌面应用中,当用户从一台设备切换到另一台设备登录同一个账号,而且必要迁徙相关的应用实例及其窗口时,在恢复 WindowStage 后,onWindowStageRestore 就会被触发。可以在这个函数里重新加载窗口内的一些个性化设置(如壁纸选择、窗口透明度设置等),使得窗口在新设备上能出现出和原来相似的外观和体验。
onForeground --- 会在组件进入前台时被调用



[*]含义:当 UIAbility 组件进入前台时,这个函数会被调用。具体来说,是在应用从背景状态转换到前台状态时触发,属于 UIAbility 生命周期回调的一部分。它是一个同步接口,不支持异步回调,意味着它会在组件完全进入前台后才继续后续流程。
[*]示例场景:当用户在手机上正在使用多个应用,将其中一个应用从背景切换到前台(比如点击应用图标或者通过任务切换器选择该应用)时,对于该应用相关的 UIAbility 组件,onForeground 就会被触发。在这个函数里,可以重新启动一些在背景停息的动画结果、更新表现的数据以反映最新状态等,以便让用户看到组件在前台的最佳出现。
onBackground --- 会在组件进入背景时被调用



[*]含义:当 UIABILITY 组件进入背景时,这个函数会被调用。也就是在应用从前台状态转换到背景状态时触发,同样是 UIABILITY 生命周期回调的一部分,而且也是同步接口,不支持异步回调。
[*]示例场景:当用户在手机上正在使用一个应用,然后按下手机的主页键或者切换到其他应用时,对于刚才正在使用的那个应用相关的 UIABILITY 组件,onBackground 就会被触发。在这个函数里,可以停息一些不必要的动画结果、低落数据更新频率以节流资源等,使得组件在背景能以一种较为节能和稳固的方式存在。
onContinue --- 是在应用继续运行时调用



[*]含义:当 Ability 预备迁徙时,这个函数会被触发。它主要用于在这种情况下生存相关的数据,以确保在迁徙过程中数据不会丢失,而且能在新的情况下继续正常使用。
[*]示例场景:在一个跨平台的移动应用中,当用户从手机端切换到平板端使用同一个应用,而且应用必要进行 Ability 迁徙时,onContinue 就会被触发。可以在这个函数里将手机端应用中正在处理的数据(如正在编辑的文档内容、购物车中的商品信息等)生存到云端或者本地缓存中,以便在平板端能顺遂获取并继续处理这些数据。
onNewWant --- 会在组件吸收到新的哀求时被调用



[*]含义:当 UIABILITY 实例已经启动并在前台运行过,之后由于某些缘故原由切换到背景,然后再次启动该 UIABILITY 实例时,这个函数会被回调执行。这主要针对的是 UIABILITY 实例的热启动情况,也就是在已经有过运行履历的基础上再次启动时进入这个生命周期回调。
[*]示例场景:在一个消息阅读应用中,用户打开一篇消息文章阅读,然后切换到背景去做其他事情,之后又再次打开这篇消息文章对应的 UIABILITY 实例时,onNewWant 就会被触发。在这个函数里,可以根据之前的阅读进度、用户的浏览偏好等信息来调整文章的展示方式,比如直接跳转到前次阅读的段落等。
onDump --- 是在应用被 dump 时调用



[*]含义:当应用被 dump(可以理解为转储、导出的意思)时,这个函数会被调用。它主要用于转储客户端的一些非敏感信息,比如应用的当前版本、运行状态、一些根本的配置参数等,以便在必要时进行分析或者查看。
[*]示例场景:在软件的开发调试过程中,或者在对应用进行故障排查时,当必要了解应用的根本情况时,就可以通过触发 onDump 来获取相关的非敏感信息。比方,开发人员可以通过这个函数获取应用在某个特定时间的运行状态信息,以便分析是否存在潜在的标题。
onSaveState --- 是在应用生存状态时调用



[*]含义:当应用必要生存状态时,这个函数会被调用。它通常是与 appRecovery(可能是一种应用恢复机制)配合使用的。在应用出现故障时,如果已经使能了主动生存状态的功能,那么框架就会回调 onSaveState 来生存 UIABILITY 状态,以确保在故障排除后能恢复到之前的状态。
[*]示例场景:在一个游戏应用中,当玩家正在玩游戏过程中,突然碰到系统故障或者应用崩溃的情况,在使能了主动生存状态功能的条件下,onSaveState 就会被触发。可以在这个函数里生存游戏当前的关卡信息、玩家的得分、道具的使用情况等,以便在应用重新启动后能恢复到原来的游戏状态。
onPrepareToTerminate --- 是在应用预备终止时调用



[*]含义:当 UIABILITY 生命周期到了预备终止的阶段时,这个函数会被调用。具体来说,当系统预关闭开关打开(通过配置系统参数 persist.sys.prepare_terminate 为 true 来打开),而且在 UIABILITY 关闭时就会触发这个回调。在这个回调中,可以界说一些操纵来决定是否继续执行关闭 UIABILITY 的操纵。如果 UIABILITY 在退出时必要与用户交互确认是否关闭 UIABILITY,那么可以在今生命周期回调中界说预关闭操纵配合 terminateSelf 接口退出,比如通过弹窗确认是否关闭,并配置预关闭生命周期返回 true 取消正常关闭。
[*]示例场景:在一个办公应用中,当系统预关闭开关打开,而且要关闭某个 UIABILITY 组件时,onPrepareToTerminate 就会被触发。如果该组件在关闭时必要用户确认,比如弹出一个扣问是否关闭的弹窗,而且根据用户的答复(是或否)来决定是否继续关闭操纵,那么可以在这个函数里实现这些操纵,通过返回值来控制是否取消正常关闭。
onShare --- 是在应用分享时调用



[*]含义:当应用必要进行分享时,这个函数会被调用。在跨端分享场景下,它主要用于在 UIABILITY 中设置分享方设备要分享的数据。
[*]示例场景:在一个图片分享应用中,当用户选择要分享一张图片时,在 UIABILITY 中对应的 onShare 函数就会被触发。可以在这个函数里获取要分享的图片信息(如图片的路径、分辨率、缩略图等),并设置为分享的数据,以便在跨端分享过程中传递给其他设备或应用。
onBackPressed ---  是在用户按下返回键时调用。



[*]含义:当 UIABILITY 侧滑返回时,这个函数会被调用。它属于 UIABILITY 生命周期回调的一部分,而且根据返回值来决定是否烧毁 UIABILITY。当 targetSdkVersion <12 时,默认返回值为 false,会烧毁 UIABILITY;当 targetSdkVersion>= 12 时,默认返回值为 true,会将 UIABILITY 移动到背景不烧毁。
[*]示例场景:在一个手机应用中,当用户通过侧滑手势从当前页面返回上一页面时,对于该应用相关的 UIABILITY 组件,onBackPressed 就会被触发。如果是在一个较老版本的应用(targetSdkVersion <12)中,那么可能会直接烧毁 UIABILITY,导致页面重新加载等情况;而在新版本的应用(targetSdkVersion>= 12)中,会将 UIABILITY 移动到背景,如允许以更快地恢复到之前的页面状态等。
Navigation 的生命周期

onWillAppear --- 会在组件即将出现时被调用



[*]含义:这个函数会在对应的组件即将出现在屏幕等可视区域之前被调用。也就是说,在组件马上要变为可见状态的前夕,系统会触发执行这个函数内界说的代码逻辑。
[*]示例场景:比如在一个手机应用的页面切换场景中,当从一个页面将要切换到包含该组件的页面时,在组件实际在新页面出现出来之前,onWillAppear 就会被调用。此时可以在这个函数里进行一些预备工作,像是预先加载一些数据、初始化某些状态变量等,以便组件在出现后能快速正常地展示相关内容。
onAppear --- 会在组件出现时被调用



[*]含义:它会在组件确切地出现在可视区域,也就是真正在屏幕上表现出来的时间被调用。
[*]示例场景:继续上面手机应用页面切换的例子,当组件完备地出现在新页面上,用户能够看到它的时间,onAppear 函数就会执行。在这个函数里可以进行一些和组件表现后相关的操纵,比如启动一个动画结果展示组件的入场动画,或者发送一个统计变乱告知服务器该组件已成功表现给用户等。
onWillShow --- 会在组件即将表现时被调用



[*]含义:和 onWillAppear 雷同,也是在组件即将表现的时间被调用,但在一些框架中可能会存在细微差别,比如对于 “表现” 的界说可能会稍有不同(可能涉及到组件从隐蔽状态到即将变为完全可见的过渡阶段触发,而不但纯只是初次出现前)。总体来说,强调的是在即将出现可视状态之前的那一刻。
[*]示例场景:在一个具有折叠屏功能的设备上的应用中,当用户展开屏幕使得本来折叠状态下隐蔽的某个组件即将完备表现出来时,onWillShow 可能就会被触发。可以在这个函数里调整组件的布局参数以适应新的屏幕空间等预备工作。
onShown --- 会在组件表现时被调用



[*]含义:同样雷同于 onAppear,意味着组件已经成功表现出来了,不过同样可能在不同框架下与 onAppear 在触发机遇上存在些微不同(比如对于表现完成状态的界定细节差异),一样平常表现组件已完成表现动作。
[*]示例场景:在一个多窗口应用场景中,当用户将某个窗口从最小化恢复到正常表现状态,窗口内的组件在完成表现过程后,onShown 函数会执行。此时可以更新组件内与窗口表现状态相关的数据展示等。
onWillHidede --- 会在组件即将隐蔽时被调用



[*]含义:这里应该是 onWillHide(猜测可能是笔误哦),它会在组件即将进入隐蔽状态之前被调用。就是说在组件马上要从当前的可见状态变为不可见之前的瞬间,会触发执行这个函数内的代码。
[*]示例场景:在一个视频播放应用中,当用户点击停息播放并切换到音频播放模式时,视频播放区域的组件(如视频画面表现组件)即将隐蔽,此时 onWillHide 就会被调用。可以在这个函数里停息一些与视频画面表现相关的定时器或者清理一些画面渲染相关的暂时资源等。
onHidden --- 会在组件隐蔽时被调用



[*]含义:在组件已经完全进入隐蔽状态之后被调用,表明组件此刻已经不可见了。
[*]示例场景:在一个具有分屏功能的应用中,当用户将包含某个组件的分屏窗口最小化,使得该组件彻底隐蔽起来后,onHidden 函数就会执行。可以在这个函数里释放一些组件占用的内存资源等,因为组件暂时不必要展示了
onWillDisappear --- 会在组件即将消失时被调用



[*]含义:会在组件即将从屏幕或可视区域彻底消失之前被调用,这里的消失可能是因为页面切换、组件被烧毁等多种缘故原由导致其不再在可视范围内。
[*]示例场景:在一个电商应用的商品详情页面,当用户点击 “返回” 按钮从商品详情页回到商品列表页时,商品详情页上的一些特定组件(如商品图片放大展示组件等)即将消失,onWillDisappear 就会被调用。此时可以生存一些组件当前的状态信息(比如图片的放大倍数等)以便下次再次展示该组件时能恢复相应状态。
onDisappear --- 会在组件消失时被调用



[*]含义:在组件已经从可视区域彻底消失之后被调用,意味着组件的整个生命周期中可视阶段已经竣事。
[*]示例场景:在一个游戏应用中,当玩家完成一关游戏,游戏中的某个辅助提示组件完成了它的任务,在它从屏幕上彻底消失后,onDisappear 函数就会执行。可以在这个函数里进行一些末了的清理工作,比如删除与该组件相关的一些暂时文件等。
onBackPressed --- 会在用户按下返回键时被调用



[*]含义:会在用户按下设备上的返回键(通常是手机、平板等设备上用于返回上一页面或执行退却操纵的按键)时被调用。不同的应用和框架对于按下返回键后的具体处理逻辑可能会有所不同,这个函数就是用来界说在这种情况下要执行的操纵。
[*]示例场景:在一个消息阅读应用中,当用户在阅读一篇消息文章时按下返回键,onBackPressed 函数就会被调用。可能会根据应用的计划选择关闭当前文章详情页并返回消息列表页,或者提示用户是否要生存阅读进度等操纵。






免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: HarmonyOs DevEco Studio小技巧28--部分鸿蒙生命周期详解