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
的生命周期方法来监听页面的销毁。在自定义类中,可以通过重写Ability
的onDestroy()
方法来监听页面的销毁事件。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规范。