HarmonyOS 有没有全局方法可以监听Component生命周期?

希望提供全局方法监听Component生命周期,在onPageShow和onPageHide中统一做埋点上报。

HarmonyOS
2024-10-29 10:54:43
923浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
put_get

​有两种方案可以实现:

1、使用Navgation页面组件,这样NavDestination里能支持onPageShow和onPageHide事件。

2、通过字段传递生命周期,示例代码:​

@Component  
struct MyComponent {  
  @Link @Watch('OnPageChange') isOnPageShow:boolean;  
  
  build() {  
    Row() {  
      Column() {  
        Text('Hello World')  
      }  
    }  
  }  
  
  OnPageChange() {  
    if (this.isOnPageShow == true) {  
      this.onPageShow();  
    }else {  
      this.onPageHide();  
    }  
  }  
  
  onPageShow(): void {  
    console.log('OnPageShow:' + this.isOnPageShow);  
  }  
  
  onPageHide(): void {  
    console.log('OnPageHide:' + this.isOnPageShow);  
  }  
}  
  
@Entry  
@Component  
struct Index {  
  @State isOnPageShow:boolean = false;  
  
  build() {  
    Column() {  
      MyComponent({ isOnPageShow:this.isOnPageShow })  
    }  
  }  
  
  onPageShow(): void {  
    this.isOnPageShow = true;  
  }  
  onPageHide(): void {  
    this.isOnPageShow = false;  
  }  
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.

​全局页面生命周期无感监听文档:

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/js-apis-arkui-UIContext.md#uiobserver11

示例代码:​

import observer from '@ohos.arkui.observer'  
  
// 实现回调函数  
callbackFunc(info:observer.RouterPageInfo) {  
  hilog.info(0x0000, 'testTag', 'callbackFunc: index: %{public}d, name: %{public}s, state: %{public}d', info.index, info.name, info.state);  
}  
  
// 在合适的地方注册router页面监听,范围为当前UIContext  
observer.on('routerPageUpdate', this.getUIContext(), this.callbackFunc)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

​当A跳转到B时,按顺序触发A页面的onPageHide->B页面的aboutToAppear->B页面的onPageShow;

当B返回A时,按顺序触发B页面的onPageHide->A页面的onPageShow->B页面的aboutToDisappear。每个事件都会走到callbackFunc中。​

分享
微博
QQ
微信
回复
2024-10-29 17:51:25


相关问题
如何监听全局Ability生命周期
850浏览 • 1回复 待解决
HarmonyOS能否全局监听页面的生命周期
1251浏览 • 1回复 待解决
监听Ability生命周期
1930浏览 • 1回复 待解决
swiper切换监听生命周期
1764浏览 • 1回复 待解决
如何监听subwindow生命周期
816浏览 • 1回复 待解决
如何监听AbilitySlice的生命周期
5638浏览 • 1回复 待解决
HarmonyOS 监听所有page的生命周期
1128浏览 • 1回复 待解决
HarmonyOS Navigation 生命周期
502浏览 • 1回复 待解决
HarmonyOS Navigation生命周期
783浏览 • 1回复 待解决