当前位置: 首页 > 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.lryc.cn/news/623701.html

相关文章:

  • 安卓14系统应用收不到开机广播
  • Android原生(Kotlin)与Flutter混合开发 - 设备控制与状态同步解决方案
  • Javascript面试题及详细答案150道之(106-120)
  • Python实现区域生长和RANSAC聚类
  • 职场新人如何在快速适应工作的同时保持自我成长节奏?
  • JUC常用线程辅助类详解
  • JavaScript 性能优化实战大纲
  • [GLM-4.5] LLM推理服务器(SGLang/vLLM) | 工具与推理解析器
  • c_str()函数的详细解析
  • 【PHP】Hyperf:接入 Nacos
  • Python | 解决 matplotlib 中文乱码
  • 基于MATLAB多智能体强化学习的出租车资源配置优化系统设计与实现
  • [论文阅读] 人工智能 + 职业教育 | 从技能操作者到技术反思者:生成式AI驱动职业教育学习范式转型
  • 豆包 Java的23种设计模式
  • 微调 AnomalyCLIP——基于对象无关提示学习与全局 - 局部优化的零样本异常检测框架性能验证
  • 迅速掌握Git通用指令
  • 7 索引的监控
  • 编程算法实例-整数分解质因数
  • Mac(五)自定义鼠标滚轮方向 LinearMouse
  • 又一家茑屋书店即将歇业,精品书店的未来在哪里?
  • Bee1.17.25更新Bug,完善功能.不支持NOSQL,分库分表Sharding(2.X版有)
  • Spark03-RDD02-常用的Action算子
  • YOLO12 改进、魔改|频域自注意力求解器FSAS,通过频域高效计算自注意力,在降低时间与空间复杂度的同时保留关键特征信息,提升遮挡、小目标检测
  • PostgreSQL——用户管理
  • 【IDEA】设置Debug调试时调试器不进入特定类(Spring框架、Mybatis框架)
  • Day3--滑动窗口与双指针--2461. 长度为 K 子数组中的最大和,1423. 可获得的最大点数,1052. 爱生气的书店老板
  • 【算法】模拟专题
  • JavaScript性能优化实战(三):DOM操作性能优化
  • openEuler等Linux系统中如何复制移动硬盘的数据
  • 【Luogu】每日一题——Day20. P4366 [Code+#4] 最短路 (图论)