HarmonyOS3 Stage模型介绍

news2024/12/23 13:54:46

Stage模型是HarmonyOS 3.1 Develper Preview(API 9)版本开始新增的模型,也是目前HarmonyOS主推且会长期演进的模型。在该模型中,由于提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”,因此称这种应用模型为Stage模型。本书也主要介绍以Stage模型为主的开发方式。

Stage模型的设计思想

Stage模型之所以成为主推模型,源于其设计思想。Stage模型的设计基于如下3个出发点。

1. 为复杂应用而设计

简化应用复杂度:

  • 多个应用组件共享同一个ArkTS引擎(运行ArkTS语言的虚拟机)实例,应用组件之间可以方便的共享对象和状态,同时减少复杂应用运行对内存的占用。
  • 采用面向对象的开发方式,使得复杂应用代码可读性高、易维护性好、可扩展性强。

2. 支持多设备和多窗口形态

应用组件管理和窗口管理在架构层面解耦:

  • 便于系统对应用组件进行裁剪(无屏设备可裁剪窗口)。
  • 便于系统扩展窗口形态。
  • 在多设备(如桌面设备和移动设备)上,应用组件可使用同一套生命周期。

3. 平衡应用能力和系统管控成本

Stage模型重新定义应用能力的边界,平衡应用能力和系统管控成本。

  • 提供特定场景(如卡片、输入法)的应用组件,以便满足更多的使用场景。
  • 规范化后台进程管理:为保障用户体验,Stage模型对后台应用进程进行了有序治理,应用程序不能随意驻留在后台,同时应用后台行为受到严格管理,防止恶意应用行为。

Stage模型的Ability生命周期

在Ability的使用过程中,会有多种生命周期状态。掌握Ability的生命周期,对于应用的开发非常重要。

为了实现多设备形态上的裁剪和多窗口的可扩展性,系统对组件管理和窗口管理进行了解耦。Ability的生命周期包括Create、Foreground、Background、Destroy四个状态,WindowStageCreate和WindowStageDestroy为窗口管理器(WindowStage)在Ability中管理UI界面功能的两个生命周期回调,从而实现Ability与窗口之间的弱耦合。如图所示。

Stage模型的Ability启动模式

Ability的启动模式是指Ability实例在启动时的不同呈现状态。针对不同的业务场景,系统提供了三种启动模式:

  • singleton(单实例模式)
  • standard(标准实例模式)
  • specified(指定实例模式)

1. singleton启动模式

singleton是默认情况下的启动模式。

每次调用startAbility()方法时,如果应用进程中该类型的Ability实例已经存在,则复用系统中的Ability实例。系统中只存在唯一一个该Ability实例,即在最近任务列表中只存在一个该类型的Ability实例。此时,应用的Ability实例已创建,当再次调用startAbility()方法启动该Ability实例,此时只会进入该Ability的onNewWant()回调,不会进入其onCreate()和onWindowStageCreate()生命周期回调。

如果需要使用singleton启动模式,在module.json5配置文件中的"launchType"字段配置为"singleton"即可。

{
   "module": {
     // ...
     "abilities": [
       {
         "launchType": "singleton",
         // ...
       }
     ]
  }
}

2. standard启动模式

在standard启动模式下,每次调用startAbility()方法时,都会在应用进程中创建一个新的该类型Ability实例。即在最近任务列表中可以看到有多个该类型的Ability实例。这种情况下可以将Ability配置为standard。

standard启动模式的开发使用,在module.json5配置文件中的"launchType"字段配置为"standard"即可。

3. specified启动模式

在specified启动模式下,在Ability实例创建之前,允许开发者为该实例创建一个唯一的字符串Key,创建的Ability实例绑定Key之后,后续每次调用startAbility()方法时,都会询问应用使用哪个Key对应的Ability实例来响应startAbility请求。运行时由Ability内部业务决定是否创建多实例,如果匹配有该Ability实例的Key,则直接拉起与之绑定的Ability实例,否则创建一个新的Ability实例。

例如,用户在应用中重复打开同一个文档时,启动的均是最近任务列表中的同一个任务。以及在应用中重复新建文档时,启动的均是最近任务列表中新的任务。这种情况下可以将Ability配置为specified。当再次调用startAbility()方法启动该Ability实例,且AbilityStage的onAcceptWant()回调匹配到一个已创建的Ability实例。此时,再次启动该Ability时,只会进入该Ability的onNewWant()回调,不会进入其onCreate()和onWindowStageCreate()生命周期回调。

specified启动模式的开发使用,在module.json5配置文件的"launchType"字段配置为"specified"即可。

参考引用

  • 《跟老卫学HarmonyOS开发》 开源免费教程,https://github.com/waylau/harmonyos-tutorial
    *《鸿蒙 HarmonyOS 应用开发从入门到精通战》(柳伟卫著,北京大学出版社)https://item.jd.com/13696724.html、http://product.dangdang.com/29386650.html
  • 《鸿蒙HarmonyOS手机应用开发实战》(清华大学出版社2022年1月出版) https://item.jd.com/13568130.html
  • “鸿蒙系统实战短视频App 从0到1掌握HarmonyOS”视频教程https://coding.imooc.com/class/674.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一款红队批量脆弱点搜集工具

功能 指纹识别:调用“三米前有香蕉皮“前辈工具,他的工具比finger好用 寻找资产中404,403,以及网页中存在的其他薄弱点,以及需要特定路径访问的资产 后续会把nuclei加进来 目前只有windows可以用 使用 第一次使用脚本请运行p…

Neo4j安装配置教程

目录结构 前言Neoj4简介安装JDKNeo4j安装步骤Neo4j下载解压Neo4j压缩包配置环境变量启动Neo4j执行命令报错,报错信息如下: 启动Neo4j,再次测试浏览器访问Neo4j参考链接 前言 安装所需配件网盘一键下载。以下描述中,官网下载均有描…

1、2、3类LSA解析

拓扑 需求 (1)企业核心机房,连接不同楼宇,实现不同楼宇互通; (2)企业核心机房设置为OSPF骨干区域; (3)其他办公楼宇为非骨干区域,通过路由器与…

Vue+SpringBoot打造超市商品管理系统(附源码文档)

作者主页:Designer 小郑 作者简介:Java全栈软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发、系统定制、远程技术指导。CSDN学院、蓝桥云课认证讲师,全栈领域优质创作者。 目录 一…

C++学习之旅 - 指针

文章目录 指针的基本概念指针的定义与使用指针占用的内存空间空指针野指针cont修饰指针指针&数组访问数组中第一个元素(访问&指针)如何访问数组中的第二个字节 指针和函数 指针的基本概念 指针的作用: 可以通过指针间接访问内存 内存编号是从0开始记录的,一…

offer收割机再现,接口测试常问面试题 (附答案),对标大厂面试...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 软件测试面试题&am…

海外网红营销必备:品牌与海外红人合作的谈判技巧指南

随着社交媒体的飞速发展,海外网红已经成为品牌营销的热门选择。与知名红人合作,可以有效地扩大品牌影响力、提升产品认知度,并吸引目标受众。然而,与红人的谈判过程常常充满挑战,需要品牌营销人员具备一定的技巧和策略…

以太坊是匿名化的影子银行?将如何适应并影响传统金融?

以太坊经常被描述为传统金融权力的对立面。实际上,以太坊的目标并不是去颠覆传统金融领域,而试图去补充和改善它。未来,这两个系统将会有更多的交集。 多极世界中的中立性 以太坊并不是一种隐形的货币替代品和匿名的影子银行,目前…

人才“选用育留”难?做好这步,人力资源或许比你想象的更轻松

人才作为企业生存和发展最重要的资源之一,如何发现、使用、培养、留住优秀人才是所有企业人力资源管理的关键。但在实际场景当中,“招聘流程长造成人才流失”、“员工招聘不精准、效率低”、“员工培育周期长、成本高”、“优秀人才留不住”等问题正深深…

浅入浅出 iptables 网络隔离原理

01 iptables简介 iptables ipfirewall(内核1.x时代) ipchains(内核2.x时代) iptables 网络协议栈 Link Layer 数据链路层的数据流向,根据mac寻址找到对应的网卡后向上进入网络层 Network Layer 网络层的数据流向&am…

实训第一天

目录 主流的关系数据库 非关系型数据库 Mysql的启动和停止 Mysql登录方式本地登录 远程登录 查看mysql数据库 创建数据库 使用数据库 删除数据库 Mysql结构化查询语句 mysql 数据类型 数值类型 字符类型 日期类型 唯一约束与主键约束 主流的关系数据库 mysql,db2,oracle&a…

Selenium自动化之弹窗处理

1.前言 我们在使用Selenium做Web自动化测试时,页面经常出现弹窗,如果不处理后续的测试脚本就无法正常运行,今天我们就带大家一起来学习如何处理Web页面上的弹窗。 2.Web页面弹窗的分类 弹窗通常有3种:Alert类型弹框、Confirm类…

人工智能之ChatGPT

前言 近日,美国OpenAI研发的聊天机器人程序ChatGPT爆火,相关话题多次引发热议。 ChatGPT是啥? 简单来说,ChatGPT是一个智能聊天机器人,但是它的功能却远不止聊天 利用机器学习算法,ChatGPT可以利用人工智…

SVN搭建ubuntu服务器过程(图文超详细)

目录 步骤0:搭建环境: 步骤一:下载subversion安装包 步骤二:创建版本库目录 步骤三:创建版本库 步骤四:修改SVN配置 步骤五:重启SVN服务 步骤0:搭建环境: 在ubuntu…

仙境传说RO:添加地图传送门教程

仙境传说RO:添加地图传送门教程 大家好我是艾西,上一篇文章中我跟大家分享了仙境传说RO怎么添加NPC,NPC可以加入自己想要售卖的装备物品等。那么对于玩家跑地图需要手动跑肯定是不方便的毕竟大家玩游戏就是为了娱乐以及放松,那么…

降本增效,StarRocks 在同程旅行的实践

作者:周涛 同程旅行数据中心大数据研发工程师 同程旅行是中国在线旅游行业的创新者和市场领导者。作为一家一站式平台,同程旅行致力于满足用户旅游需求,秉持 "让旅行更简单、更快乐" 的使命,主要通过包括微信小程序、AP…

深浅拷贝及赋值区别理解

浅拷贝: 对象浅拷贝Object.assign() 数组的浅拷贝Array.prototype.slice()与Array.prototype.concat() 解构赋值 1.对于数组/对象中基本数据类型[123,234],拷贝的是数值,所以修改拷贝后的这个值,原数据不会改变;2.对…

Java面对对象三大特性之封装】

目录 1.封装2. 访问权限2.1 public权限2.2private权限2.3 默认权限 3.包的定义4. static成员5.静态成员初始化6.对象的打印 1.封装 封装:就是将数据和操作数据的方法进行结合,隐藏对象的属性和方法,仅对外实现一些接口和对象进行交互 其实就是…

中国振华刘昕:携手用友打造电子行业的数智化平台,服务全行业

近期,一年一度的用友BIP技术大会圆满召开。来自行业领先企业的CIO/CDO、生态伙伴、开发者、分析师、媒体等共聚北京用友产业园,了解最新技术发展趋势、探讨行业热点话题。期间,中国振华电子集团有限公司信息中心主任兼研究院副院长刘昕在数科…

layui(2)----页面元素

水平导航栏 依赖加载模块&#xff1a;element <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport"…