学习笔记(五十):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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类:
鸿蒙学习笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具