千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 鸿蒙系统开发系列教程10-Page Ability生命周期

鸿蒙系统开发系列教程10-Page Ability生命周期

来源:千锋教育
发布人:小千
时间: 2021-07-22 09:46:00 1626918360

      鸿蒙系统作为华为自主研发的操作系统,一经推出就受到了不少的关注,而小千也为大家经理准备了鸿蒙开发的一系列教程,今天我们就来给大家介绍一下Page Ability生命周期相关内容,同学们记得带好小本本。

      Page Ability生命周期

      系统管理或用户操作等行为均会引起Page实例在其生命周期的不同状态之间进行转换。Ability类提供的回调机制能够让Page及时感知外界变化,从而正确地应对状态变化(比如释放资源),这有助于提升应用的性能和稳健性。

      Page生命周期回调

      Page生命周期的不同状态转换及其对应的回调,如图所示

千锋<a href=IT培训鸿蒙教程1" />

      Page生命周期和状态会经历以下这些过程:

      onStart()初始化(INITIAL):当系统首次创建Page实例时,触发该回调,对于一个Page实例,该回调在其生命周期过程中仅仅触发一次,Page在该逻辑后进入INACTIVE(不活动的)状态,开发者必须要重写该方法,并在此配置默认展示的AbilitySlice

      onActive():Page会在进入INACTIVE状态后来到前台,然后系统调用此回调。Page在此之后进入ACTIVE状态,该状态是应用与用户交互的状态。Page将保持在此状态,除非某类事件发生导致Page失去焦点,比如用户点击返回键或导航到其他Page。当此类事件发生时,会触发Page回到INACTIVE状态,系统将调用onInactive()回调。此后,Page可能重新回到ACTIVE状态,系统将再次调用onActive()回调。因此,开发者通常需要成对实现onActive()和onInactive(),并在onActive()中获取在onInactive()中被释放的资源。

      onInactive():当Page失去焦点时,系统将调用此回调,此后Page进入INACTIVE状态。开发者可以在此回调中实现Page失去焦点时应表现的恰当行为。

      onBackground():如果Page不再对用户可见,系统将调用此回调通知开发者用户进行相应的资源释放,此后Page进入BACKGROUND状态。开发者应该在此回调中释放Page不可见时无用的资源,或在此回调中执行较为耗时的状态保存操作。

      onForeground():处于BACKGROUND状态的Page仍然驻留在内存中,当重新回到前台时(比如用户重新导航到此Page),系统将先调用onForeground()回调通知开发者,而后Page的生命周期状态回到INACTIVE状态。开发者应当在此回调中重新申请在onBackground()中释放的资源,最后Page的生命周期状态进一步回到ACTIVE状态,系统将通过onActive()回调通知开发者用户。

      onStop():系统将要销毁Page时,将会触发此回调函数,通知用户进行系统资源的释放。销毁Page的可能原因包括以下几个方面:用户通过系统管理能力关闭指定Page,例如使用任务管理器关闭Page。用户行为触发Page的terminateAbility()方法调用,例如使用应用的退出功能。配置变更导致系统暂时销毁Page并重建。系统出于资源管理目的,自动触发对处于BACKGROUND状态Page的销毁。

      如何测试Page Ability的生命周期呢?主要是看Page Ability和AbilitySlice之间的生命周期状态是如何切换的。我们用以下代码来测试一下。

      MainAbility代码:

千锋IT培训鸿蒙教程2

      MainAbilitySlice代码:

千锋IT培训鸿蒙教程3

      以上就是这一期的鸿蒙开发教程了,下一期我们继续介绍一下AbilitySlice之间的回传值,感兴趣的同学记得关注一下。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT