FA模型切换Stage模型组件切换之PageAbility切换

FA模型中PageAbility对应Stage模型中的UIAbility,PageAbility切换为UIAbility的方法如下。

  1. 在Stage应用中 创建UIAbility。

  2. 将FA应用中PageAbility的代码迁移到新创建的UIAbility中。 FA应用中PageAbility和Stage应用中的UIAbility生命周期基本一致,两者的生命周期详细对比见下表。

    FA的PageAbilityStage的UIAbility对应关系描述
    onCreate(): voidonCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void两者的意义和调用时机一致,Stage模型在回调中新增了参数,方便开发者在创建的时候获取启动相关的数据。
    NAonWindowStageCreate(windowStage: window.WindowStage): voidStage模型新增,窗口创建时由系统回调。
    onActive(): voidon(eventType: ‘windowStageEvent’, callback: Callback): void;
    WindowStageEventType.ACTIVE两者的意义和调用时机一致。Stage模型下移动到了窗口对象中。
    onShow(): voidonForeground(): void两者的意义和调用时机一致,参数也一致。
    onNewWant(want: Want): voidonNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void两者的意义和调用时机一致,Stage模型多了LaunchParam参数来告知应用启动原因。
    onInactive(): voidon(eventType: ‘windowStageEvent’, callback: Callback): void;
    WindowStageEventType.INACTIVE两者的意义和调用时机一致。Stage模型下移动到了窗口对象中。
    onHide(): voidonBackground(): void两者的意义和调用时机一致,参数也一致。
    NAonWindowStageDestroy(): voidStage模型新增,窗口销毁时由系统回调。
    onDestroy(): voidonDestroy(): void两者的意义和调用时机一致,参数也一致。

  1. 对迁移过来的代码进行调整,主要有以下两部分。 1、指定加载页面的方式不同。

    • 在FA模型中,通过在config.json中设置页面信息来配置需要加载的页面。
    • 在Stage模型中,则是通过在onWindowStageCreate回调中调用windowStage.loadContent实现对页面的加载。

    例如,开发者希望Ability启动后加载"pages/Index"页面,在FA模型中,开发者需要在config.json中加入如下代码:

"pages" : [
    "pages/Index"
]

在Stage模型中,则在MainAbility中实现如下接口:

 import Window from '@ohos.window';
 import UIAbility from '@ohos.app.ability.UIAbility';

 export default class EntryAbility extends UIAbility {
   onWindowStageCreate(windowStage: Window.WindowStage) {
     // Main window is created, set main page for this ability
     windowStage.loadContent('pages/Index', (err, data) => {
       if (err.code) {
         console.error("loadContent failed")
         return;
       }
     });
   }
 }

2、在resources/base/profile/main_pages.json中配置页面,以"pages/Index"为例:

{
  "src": [
    "pages/Index"
  ]
}

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/503055.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

面试八股——redis——集群

0. redis集群的方案 1.主从复制(高并发读) 一个主节点负责写操作(增删改),多个从节点负责查操作。 主从复制是让主节点修改数据之后,将对应数据同步到从节点中。 2.哨兵模式(实现高可用&#x…

输出单链表倒数第K个结点值

方法一: 两次遍历链表。第一次遍历,计算链表长度,然后计算链表倒数第m个结点的正数位置k,判断位置是否合法,如果不合法,输出NOT FOUND,否则,进行第二次遍历链表,查找链表…

Cocos Creator 常见问题记录

目录 问题1、精灵图九宫格,角度不拉伸 问题2、BlockInputEvents 防止透屏 问题1、精灵图九宫格,角度不拉伸 点击编辑,拖拽到可变区域 问题2、BlockInputEvents 防止透屏

NFT-前端开发(一)

使用 在我们想要保存项目的目录下打开终端运行npx create-react-app test2命令初始化,test2是我们的项目名字,可以自己去更改。 初始化完成后,我们目录下就会多出一个test2文件夹 ,然后我们在vscode中打开该文件夹 然后我们打开j…

Linux 基于chrony进行时钟同步方案验证

Linux 基于chrony进行时钟同步方案验证 1. 背景介绍2. 验证过程2.1 追踪配置2.2 追平记录2.2 追平时间换算 3. 疑问和思考3.1 如何统计追踪1s需要花费多长时间? 4. 参考文档 chrony是一个Linux系统中用于时钟同步的工具。它使用NTP(网络时间协议&#xf…

HarmonyOS 应用开发之模型切换

本文介绍如何将一个FA模型开发的声明式范式应用切换到Stage模型,您需要完成如下动作: 工程切换:新建一个Stage模型的应用工程。 配置文件切换:config.json切换为app.json5和module.json5。 组件切换:PageAbility/Serv…

9.2-源码分析:Dubbo Remoting 层 Buffer 缓冲区

Buffer 是一种字节容器,在 Netty 等 NIO 框架中都有类似的设计,例如,Java NIO 中的ByteBuffer、Netty4 中的 ByteBuf。Dubbo 抽象出了 ChannelBuffer 接口对底层 NIO 框架中的 Buffer 设计进行统一,其子类如下图所示: …

私域流量:如何给微信客户贴上精准标签?

私域流量在现代营销中变得越来越重要,而给微信客户贴上精准标签是私域流量管理的一个关键环节。今天就给大家分享三个给客户贴上精准标签的小技巧,一起来看看吧! 首先,我们可以通过设定静态标签来给微信客户贴上精准标签。这意味…

初识C++(四)深入了解拷贝构造函数

1.拷贝构造函数 拷贝构造函数是一种特殊的构造函数,在对象需要以同一类的另一个对象为模板进行初始化时被调用。它的主要用途是初始化一个对象,使其成为另一个对象的副本 class Date { public:Date(int year 1, int month 1, int day 1){_year yea…

JAVAEE之网络原理

1.IP地址 IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址。 格式 IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)&…

P15:PATH环境变量

为什么要配置环境变量 当我们打开DOS窗口,输入:javac,出现下面问题。 原因:windows操作系统在当前目录中无法找到javac命令文件。Windows操作系统是如何搜索硬盘上某一个命令? 首先从当前目录中搜索该命令如果当前目录…

LeetCode---390周赛

题目列表 3090. 每个字符最多出现两次的最长子字符串 3091. 执行操作使数据元素之和大于等于 K 3092. 最高频率的 ID 3093. 最长公共后缀查询 一、每个字符最多出现两次的最长子字符串 非常经典的滑动窗口问题,即动态维护一段区间,使得这段区间满足…

代码随想录-二叉树(路径)

目录 257. 二叉树的所有路径 题目描述: 输入输出描述: 思路和想法: 404. 左叶子之和 题目描述: 输入输出描述: 思路和想法: 513.找树左下角的值 题目描述: 输入输出描述:…

刷爆LeetCode:两数之和 【1/1000 第一题】

👤作者介绍:10年大厂数据\经营分析经验,现任大厂数据部门负责人。 会一些的技术:数据分析、算法、SQL、大数据相关、python 作者专栏每日更新:LeetCode解锁1000题: 打怪升级之旅https://blog.csdn.net/cciehl/category…

如何在OceanBase的OCP多节点上获取日志

背景 在使用OceanBase的OCP的过程中,因各种因素,我们可能需要对当前页面进行跟踪。在单一ocp节点环境下,我们自然可以直接在该节点上查找所需的日志。然而,当我们的环境中部署了多个ocp节点时,在排查问题时就会变得相…

让机器理解语言,从字词开始,逐步发展到句子和文档理解:独热编码、word2vec、词义搜索、句意表示、暴力加算力

让机器理解语言,从字词开始,逐步发展到句子和文档理解:独热编码、词嵌入、word2vec、词义搜索、句意表示、暴力加算力 独热编码:分类 二进制特征Word2Vec 词嵌入: 用低维表示 用嵌入学习 用上下文信息Skip-gram 跳字…

工业测试测量仪器与人工智能(AI)如何结合

工业测试测量仪器与人工智能(AI)的结合可以通过多种方式实现,其中一些主要方法包括: 1. 数据分析和预测 智能数据分析:利用AI算法对从传感器和测试仪器收集的数据进行分析,识别模式、趋势和异常&#xff0…

RVM安装ruby笔记

环境 硬件:Macbook Pro 系统:macOS 14.1 安装公钥 通过gpg安装公钥失败,报错如下: 换了几个公钥地址(hkp://subkeys.pgp.net,hkp://keys.gnupg.net,hkp://pgp.mit.edu),…

瑞吉外卖实战学习--6、通过try和catch进行异常处理

try和catch进行异常处理 效果图前言1、公共拦截器进行异常处理1.1、创建公共报错处理的方法1.2、@ControllerAdvice中设置要拦截的类1.3、@ExceptionHandler中写处理的异常类2、完善错误拦截器2.1、效果效果图 前言 当用户名重复数据库会报错,此时就需要捕获异常操作 1、公共…

LM算法探寻——答案在022浙江大学信号与系统

LM算法详解 | 宇尘 (gitee.io) 求函数最小值,从另一个角度理解是求误差最小值。 梯度 最陡梯度下降算法和LMS算法原理介绍及MATLAB实现_lms滤波器中的梯度下降-CSDN博客 均值即平均值 (3 封私信 / 56 条消息) FIR滤波器中的冲激响应怎么理解? 和滤波有…