HarmonyOS组件的生命周期

带Entry修饰的组件的生命周期

不带Entry修饰的组件的生命周期

组件的生命周期有以下5个方法
但是不带entry修饰的组件只有1和2方法

 1. aboutToAppear()
 2. aboutToDisappear()
 3. onPageShow()
 4. onBackPress()
 5. onPageHide()

下面先大致说下这几个方法

aboutToAppear()

这个方法在组件被创建到build执行之前被系统调用
一般在这个方法里面做页面初始化数据

aboutToDisappear()

这个方法在组件被销毁的时候被系统调用,一般在这个方法里面回收资源

onPageShow()

页面显示的时候调用

onBackPress()

按下返回键被系统调用

onPageHide()

当前页面不可见的时候被系统调用

为了搞清楚带entry 修饰的组件页面从创建到销毁过程中的生命周期,已Index SecondPage 为例 在页面中重写上面5个方法。在方法被调用的时候打印下日志。

Index.ets

import hilog from '@ohos.hilog'
import router from '@ohos.router'
@Entry
@Component
struct Index {
  @State TAG: string = 'entry model'

  aboutToAppear(){
    hilog.info(0x000,this.TAG,'%{public}s','Index Page aboutToAppear')
  }

  aboutToDisappear(){
    hilog.info(0x000,this.TAG,'%{public}s','Index Page aboutToDisappear')
  }

  onPageShow(){
    hilog.info(0x000,this.TAG,'%{public}s','Index Page onPageShow')
  }

  onPageHide(){
    hilog.info(0x000,this.TAG,'%{public}s','Index Page onPageHide')
  }

  onBackPress(){
    hilog.info(0x000,this.TAG,'%{public}s','Index Page onBackPress')
  }

  build() {
    Row() {
      Column() {
        Text(this.TAG)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(()=>{
            router.pushUrl({
              url:'pages/SecondPage'
            })
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

SecondPage.ets

import hilog from '@ohos.hilog'

@Entry
@Component
struct SecondPage {
  @State TAG: string = 'entry model'

  aboutToAppear() {
    hilog.info(0x000, this.TAG, '%{public}s',  'Second Page aboutToAppear')
  }

  aboutToDisappear() {
    hilog.info(0x000, this.TAG, '%{public}s',  'Second Page aboutToDisappear')
  }

  onPageShow() {
    hilog.info(0x000, this.TAG, '%{public}s',  'Second Page onPageShow')
  }

  onPageHide() {
    hilog.info(0x000, this.TAG, '%{public}s',  'Second Page onPageHide')
  }

  onBackPress() {
    hilog.info(0x000, this.TAG, '%{public}s',  'Second Page onBackPress')
  }

  build() {
    Row() {
      Column() {
        Text(this.TAG)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .width('100%')
    }
    .height('100%')
  }
}

运行项目,首先看到如下日志

01-25 13:54:11.852 21437-1284/? I 00000/entry model: Index Page aboutToAppear
01-25 13:54:11.869 21437-1284/? I 00000/entry model: Index Page onPageShow

日志分析: 打开第一个页面Index.ets ,执行aboutToAppear ,然后页面开始显示执行onPageShow方法。
点击Text 跳转到SecondPage

01-25 13:57:52.654 21437-1284/? I 00000/entry model: Second Page aboutToAppear
01-25 13:57:52.656 21437-1284/? I 00000/entry model: Index Page onPageHide
01-25 13:57:52.656 21437-1284/? I 00000/entry model: Second Page onPageShow

日志分析: 打开第二个页面SecondPage.ets, 执行aboutToAppear, 然后第一个页面不可见执onPageHide, 第二个页面开始显示执行onPageShow方法。
点击返回按钮回到Index.ets页面

01-25 14:02:41.293 21437-1284/? I 00000/entry model: Second Page onBackPress
01-25 14:02:41.295 21437-1284/? I 00000/entry model: Second Page onPageHide
01-25 14:02:41.295 21437-1284/? I 00000/entry model: Index Page onPageShow
01-25 14:02:41.614 21437-1284/? I 00000/entry model: Second Page aboutToDisappear

日志分析: 点击返回按钮回到Index.ets页面,SecondPaget 执行返回方法onBackPress,回到Index.ets页面要显示SecondPage.ets 要先不可见所以执行onPageHide, 然后Index.ets开始显示执行onPageShow方法。
之后SecondPage.ets 被销毁执行aboutToDisappear。
点击Home按钮回到后台

01-25 14:06:45.317 21437-1284/? I 00000/entry model: Index Page onPageHide

此时应用退到后台Index.ets 不可见执行onPageHide 方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值