学习笔记(五十):HMRouter生命周期
支持的生命周期有:
export interface IHMLifecycle { onPrepare?(ctx: HMLifecycleContext): void; onAppear?(ctx: HMLifecycleContext): void; onDisAppear?(ctx: HMLifecycleContext): void; onShown?(ctx: HMLifecycleContext): void; onHidden?(ctx: HMLifecycleContext): void; onWillAppear?(ctx: HMLifecycleContext): void; onWillDisappear?(ctx: HMLifecycleContext): void; onWillShow?(ctx: HMLifecycleContext): void; onWillHide?(ctx: HMLifecycleContext): void; onReady?(ctx: HMLifecycleContext): void; onBackPressed?(ctx: HMLifecycleContext): boolean; }
两种使用方式:
一、若生命周期不涉及业务逻辑和数据,可以单独写一个文件定义生命周期
例如,两次后退退出
1、定义一个生命周期类
import { HMLifecycle, HMLifecycleContext, IHMLifecycle } from '@hadss/hmrouter'; @HMLifecycle({lifecycleName: 'ExitAppLifecycle'}) export class ExitAppLifecycle implements IHMLifecycle { private lastTime: number = 0; // 上一次后退操作时间 // 后退按钮事件 onBackPressed(ctx: HMLifecycleContext): boolean { let time = new Date().getTime(); if(time - this.lastTime > 2000) { this.lastTime = time; ctx.uiContext.getPromptAction().showToast({ message: '再按一次返回键回到桌面', duration: 2000 }); return true; } else { return false; } } }
2、使用
@HMRouter({ pageUrl: 'Main', singleton:true,lifecycle: 'ExitAppLifecycle'}) @Component // 注意HMRouter页面需要export export struct Main { ..... }
二、直接在HMRouter页面中定义生命周期
@HMRouter({ pageUrl: 'Setting', singleton: true }) @Component export struct Setting { aboutToAppear(): void { // onshow生命周期 HMRouterMgr.getCurrentLifecycleOwner()?.addObserver(HMLifecycleState.onShown,():void=>{ this.loadData() }) } }
作者:听着music睡
出处:http://www.cnblogs.com/xqxacm/
Android交流群:38197636
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。