如何在Angular中销毁Nativescript生命周期的applicationOn事件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Angular中销毁Nativescript生命周期的applicationOn事件相关的知识,希望对你有一定的参考价值。
在我的Nativescript + Angular手机应用程序中,我设法通过将它们放入构造函数来监听暂停和恢复事件,如下所示:
export class HomeComponent
constructor(private router: RouterExtensions,
private tokenService: TokenStoreService)
applicationOn(suspendEvent, (args: ApplicationEventData) =>
tokenService.bioscanSetAuthenticated(false);
tokenService.setLastRoute(this.router.router.url);
);
applicationOn(resumeEvent, (args: ApplicationEventData) =>
if (this.tokenService.bioScanIsAuthenticated())
return;
this.router.navigate(['/login'], animated: false, clearHistory: true );
);
这很好用,并且应用程序的行为符合预期,但是当从这些applicationOn
方法中将注释记录到控制台输出时,我注意到每次应用程序暂停和恢复时都会发出其他注释。这表明每次加载类而不是被销毁时都会重新创建applicationOn
事件。
有没有更好的方法呢?
答案
我建议在具有根作用域的服务中处理全局事件(如applicationOn
),该作用域可能只初始化一次。该服务可以托管在恢复/暂停事件时将发出的主题/观察者。
但是,如果您喜欢当前问题的热修复,请删除destroy生命周期回调中的事件侦听器。
import applicationOff as off from from "tns-core-modules/application";
....
ngOnDestroy()
// This will remove all active event listeners at once,
// If you want to remove one particular listener, you will have to pass the function reference as second parameter
applicationOff(suspendEvent);
applicationOff(resumeEvent);
以上是关于如何在Angular中销毁Nativescript生命周期的applicationOn事件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Angular 在 NativeScript 中使用 XML 而不是 Html 进行设计?
如何在 NativeScript Angular 应用程序中初始化 Firebase 推送通知
如何在 nativescript-angular html 文件中添加水平线
NativeScript + Angular:如何安装和使用图标?