当前位置: 首页 > news >正文

安卓开发者自学鸿蒙开发2页面高级技巧

​​基于uiAbility最新的Stage 模型,旧版本的FA不再讨论

所有 Page 需在 module.json5中注册

这没什么说的,安卓,vue项目等,几乎所有的类似项目都需要注册,包括 name、label和 actions

生命周期只有四个方法,安卓有6个

aboutToAppear() 页面即将显示
onPageShow()页面完全显示
onPageHide()页面完全不可见(不会因半屏弹窗或局部遮挡触发)
aboutToDisappear()页面即将不可见

数据加载建议:

aboutToAppear() 加载,但要判断是否需要加载,一些不必要实时刷新的数据,可以判断如果加载完成了就不需要再次加载了​​,当然,所有的网络加载都建议使用异步加载
页面消失前取消加载,可以在aboutToDisappear()里面

注意:build()里面不要加载数据

而应该像vue.js里面提供数据加载的结构体方法,在结构体方法里面去加载.build()里面全部处理ui相关的事务.build就像安卓的xml布局文件一样用就行了.官方推荐的方式,我们也应该区分开,让代码更加整洁,同时官方的说法是性能更高

页面跳转控制

​​新版路由 API 核心方法​​

跳转到新页面,保留当前页面(压栈)router.push({ url: ‘pages/DetailPage’ })

替换当前页面,销毁原页面(无法返回)router.replace({ url: ‘pages/LoginPage’ })

​​返回上一页(可传参)router.back({ url: ‘pages/HomePage’ })

​​清空页面栈并跳转到指定页面router.clear({ url: ‘pages/HomePage’ })

// 跳转时传参(参数直接合并到配置对象)
router.push({url: 'pages/DetailPage',params: { id: 123,mode: 'single' // 指定路由模式(single/standard)这个特殊的key必须注意一下}
});// 目标页面获取参数
aboutToAppear() {const params = router.getParams(); // { id: 123, mode: 'single' }const id = Number(params.id||0; //安全健壮的写法
}
// 全局前置守卫
router.addBeforeHook((to, from, next) => {if (to.url === Routes.Detail && !isLogin) {next({ url: Routes.Login }); // 重定向} else {next();}
});
//监听路由变化
router.addObserver((to, from) => {console.log(`从 ${from?.url} 跳转到 ${to.url}`);
});

启动模式

与安卓的4种不同,只有2种标准启动模式还有一种自定义
singleton->单例模式
multiton ->对应安卓标准模式
specified->自定义逻辑,通过 AbilityStage.onAcceptWant()动态决定实例复用或新建,需开发者自定义逻辑,这个就不展开研究了

http://www.dtcms.com/a/335420.html

相关文章:

  • 第一阶段总结:你的第一个3D网页
  • 【牛客刷题】成绩统计与发短信问题详解
  • OpenMemory MCP发布!AI记忆本地共享,Claude、Cursor一键同步效率翻倍!
  • 【FreeRTOS】刨根问底6: 应该如何防止任务栈溢出?
  • JavaScript性能优化实战(四):资源加载优化
  • FreeRTOS源码分析八:timer管理(一)
  • Hunyuan-GameCraft:基于混合历史条件的高动态交互游戏视频生成
  • 健身房预约系统SSM+Mybatis实现(三、校验 +页面完善+头像上传)
  • 基于Node.js+Express的电商管理平台的设计与实现/基于vue的网上购物商城的设计与实现/基于Node.js+Express的在线销售系统
  • Visual Studio Code 基础设置指南
  • iSCSI服务配置全指南(含服务器与客户端)
  • 12.web api 3
  • Docker入门:容器化技术的第一堂课
  • Chrome插件开发实战:todoList 插件
  • IP 分片和组装的具体过程
  • 二分查找(Binary Search)
  • 力扣刷题904——水果成篮
  • Java开发MCP服务器
  • 云计算-K8s 实战:Pod、安全上下文、HPA 、CRD、网络策略、亲和性等功能配置实操指南
  • 大模型提示词(Prompt)终极指南:从原理到实战,让AI输出质量提升300%
  • PS复刻八一电影制片厂经典片头
  • Pandas 2.0 + Arrow 加速、Dask vs Ray、Plotly 可视化:数据分析的未来
  • Centos中内存CPU硬盘的查询
  • MySQL库表操作
  • 基于多Agent的AFSIM复杂场景脚本生成技术(使用Claude Code)
  • 【牛客刷题】 计算01串通过相邻交换变成目标串的最大交换次数
  • 【深度学习-基础知识】单机多卡和多机多卡训练
  • 【Linux系统】动静态库的制作
  • 接口参数校验工具类ValidationParamUtils,让参数校验从“繁琐、重复”变得“省事、简单”!
  • Python文本过滤与清理完全指南:从基础到高级工程实践