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

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

HarmonyOS
2024-10-29 10:54:43
浏览
收藏 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;  
  }  
}

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

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)

​当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生命周期
675浏览 • 1回复 待解决
HarmonyOS能否全局监听页面的生命周期
1016浏览 • 1回复 待解决
监听Ability生命周期
1658浏览 • 1回复 待解决
swiper切换监听生命周期
1538浏览 • 1回复 待解决
如何监听subwindow生命周期
656浏览 • 1回复 待解决
如何监听AbilitySlice的生命周期
5491浏览 • 1回复 待解决
HarmonyOS 监听所有page的生命周期
911浏览 • 1回复 待解决
HarmonyOS Navigation生命周期
506浏览 • 1回复 待解决
HarmonyOS Navigation 生命周期
245浏览 • 1回复 待解决