学习笔记(五十):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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
浙公网安备 33010602011771号