HarmonyOS 鸿蒙Next:能否在自定义类中监听到页面的销毁

HarmonyOS 鸿蒙Next:能否在自定义类中监听到页面的销毁

【设备信息】

Mate60Pro

【API版本】

Api12

【DevEco Studio版本】

5.0.3.700

【问题描述】

我自己编写了一个类,想要做到在自己的类中监测页面销毁时,执行我自己的delete方法。不想要在页面层去调用我的方法

【问题代码】

export class GlobalRequest {
  listenList: number[] = []
  registerObserver:Array<RegisterObserver> = []
  static globalRequest:GlobalRequest
  static createGlobalRequest() {
    if(GlobalRequest.globalRequest)
    {
      console.log('我已经创建过了')
      return GlobalRequest.globalRequest
    }else{
      let globalRequest = new GlobalRequest()
      GlobalRequest.globalRequest = globalRequest
      return globalRequest
    }

  }
  register(event:number) {
    if(this.listenList.findIndex(item => item === event) < 0) {
      this.listenList.push(event)
      libovitalMap.Client.omCmdCallback(event,0, (response:OmCmdCallbackCalss) => {
        this.handler(response,event)
      })
    }
  }

  on(event:number, callback:Function) {
    let id = generateUUID()
    const observer:RegisterObserver = { event, id, callback }
    this.registerObserver.push(observer)
    this.register(event)
  }

  delete(event:number, callback?:Function){
    // const index = this.registerObserver.findIndex(item => item.id === id)
    const eventArray = this.registerObserver.filter(item => item.event === event)
    if(eventArray.length < 0) {
      return
    }
    if(!callback){
      eventArray.forEach(item => {
        const id = item.id
        this.registerObserver = this.registerObserver.filter(observer => observer.id !== id)
      })
      return
    }
    const index = eventArray.findIndex(item => item.callback === callback)
    if(index < 0){
      return
    }
    const id = eventArray[index].id
    this.registerObserver = this.registerObserver.filter(item => item.id !== id)
    // if(this.registerObserver.findIndex(item => item.event === event) < 0){
    // this.listenList = this.listenList.filter(item => item !== event)
    // }
  }

  handler(response:OmCmdCallbackCalss,event:number) {
    const triggerObserver = this.registerObserver.filter(item => item.event === event)
    for(let i = 0; i < triggerObserver.length; i++){
      if(triggerObserver[i].callback(response)){
        break;
      }
    }
  }
}

更多关于HarmonyOS 鸿蒙Next:能否在自定义类中监听到页面的销毁的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next:能否在自定义类中监听到页面的销毁的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS中,可以通过Ability的生命周期方法来监听页面的销毁。在自定义类中,可以通过重写AbilityonDestroy()方法来监听页面的销毁事件。onDestroy()Ability生命周期的一部分,当页面被销毁时,系统会自动调用该方法。

例如:

import Ability from '@ohos.application.Ability';

export default class MyAbility extends Ability {
    onDestroy() {
        // 页面销毁时的逻辑
        console.log('Page destroyed');
    }
}

在这个例子中,当页面销毁时,onDestroy()方法会被调用,并且会输出Page destroyed。这样,你就可以在自定义类中监听到页面的销毁事件。

这种方法不涉及Java或C语言,符合HarmonyOS的API规范。

回到顶部