HarmonyOS3 Stage模型介绍

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://xiahunao.cn/news/351057.html

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

相关文章

构建智能电商推荐系统:大数据实战中的Kudu、Flink和Mahout应用【上进小菜猪大数据】

上进小菜猪,沈工大软件工程专业,爱好敲代码,持续输出干货。 本文将介绍如何利用Kudu、Flink和Mahout这三种技术构建一个强大的大数据分析平台。我们将详细讨论这些技术的特点和优势,并提供代码示例,帮助读者了解如何在…

投影仪哪个牌子好?怎么选家用投影仪

这两年看我身边好多朋友都买了投影仪,我心里也是痒痒的。他们都说有了投影仪之后再也不用去电影院了,周末在家拉上窗帘,准备一堆甜品奶茶,躺在沙发上就可以开始享受家庭影院了。不过我在想,投影仪的牌子这么多&#xf…

十大国产投影仪品牌:极米、当贝、明基、小米等国产投影仪大牌厂商

投影仪,想必网友都比较熟悉了,目前很多家庭里都购入了投影仪作为观影设备;特别是在近些年,笔者不少朋友也选择投影仪给孩子们使用。经过多年的技术开发与经验累积,国产投影仪已成为高销量、高品质的品牌。 十大国产投…

家用投影仪什么品牌好?投影仪哪家好?

最近好多朋友都在问我家用投影仪什么品牌好。但是我的观点是选任何一个产品都不能只看品牌,一定先要了解如何选择该类产品,才能选出兼顾产品和品牌两个方面的好东西。因此,这篇文章将会先告诉大家如何选择投影仪,然后再给大家介绍…

投影仪参数哪些最重要?什么品牌投影仪好

大家都知道投影仪规格参数多,包括系统配置、显示参数、音效在内,大大小小总共几十个,要是每个都摘出来详细对比的话,也太花功夫了。俗话说得好,打蛇打七寸。与其面面俱到,不如分清主次,抓大放小…

怎么挑选投影仪?高清投影仪什么品牌好

随着家庭智能影院的兴起,投影仪逐渐成为家庭观影的一种新潮流。那么投影仪应该怎么挑选呢? 我们在选择投影仪的时候要注重不同功能参数之间的对比,下面将我自己选择投影仪的一些经验分享给大家。 首先看分辨率,我们都知道分辨率是…

投影仪什么牌子最好?哪款投影仪做家庭影院效果好

这几年来国内新兴的投影仪牌子不计其数,除了几个占据行业领先地位的老牌子之外,很多新起之秀也蓄势待发,在打造极致性价比方面卯足了劲儿,跟大牌竞争。 与其问现在什么牌子的投影仪最好,还不如自己学会看投影仪的参数&…

投影仪哪些比较好?投影仪如何选购

现在在家里装投影仪能提升幸福感,很多小伙伴准备入坑。但看到市场上那么多品牌和款型,不知道投影仪哪些比较好。接下来和大家分享自己的选购经验,后半部分整理出来了口碑比较好的部分产品,希望能帮助大家缩小选择的范围。 挑选指南…

投影仪家里用什么牌子好?哪种投影仪性价比高

人们对生活品质的追求,已经体现在投影仪上。不管是买房还是租房,都可以在家享受大屏电影的体验。可看着这么多牌子,很多人可能不知道怎么选。其实只要会看参数,就能知道投影仪家里用什么牌子好了。 1、显示芯片、分辨率 家里用的…

什么牌子投影仪好?投影仪买什么牌子的好

最近几年投影仪行业发展很快,除了几个传统的品牌,几个新兴的品牌也很受关注。概括起来国内有极米、坚果、大眼橙、明基等,国外有索尼、松下、爱普生。备选一多就容易纠结,很多人问什么牌子投影仪好,下面就分享一下自己…

什么牌子投影仪好?国产投影仪什么牌子好

小巧,智能,易于操作的物品越来越受到人们的喜爱。在科技的进步中,一些影视爱好者也不满足于电影院或者电视等传统观影方式,这也是投影仪越来越受人们欢迎的原因。它兼备了智能化与信息化等多种现代元素,同时能满足观影…

国产家用投影仪十大排名品牌,最新排名整理分享给大家选前要看哦

支持国货现在已然成为国人绝对支持的行为之一,对于像华为、鸿星尔克等国产国货出现火爆的场景,仍然历历在目!现在国产国货已经影响着世界,国际友人都爱上了中国造!今天小编分享新国货十大国产投影仪品牌排行榜&#xf…

投影仪哪个牌子的好?家庭影院投影仪哪款好

近年来的投影仪市场真的太火爆了,各大平台上都在推各种品牌的投影仪,有的是几百块钱价位的,有的是大几千的,还有上万的。作为一名家电行业的技术人员,个人觉得几百块钱的投影仪真心不能买,连智能系统都没有…

mac电脑git clone项目时报错证书过期和权限被拒绝

mac电脑使用git clone命令克隆项目时,一开始一直提示证书过期 SSL certificate problem: certificate has expired 执行以下代码关掉验证后,解决了这个问题 找到git目录 Git\git-cmd输入命令跳转到bin目录,cd bin输入命令运行git.exe执行关…

4000元左右家庭投影仪推荐,什么牌子投影仪效果最好?

在家用投影仪的选择上,更多的年轻人倾向于性价比最高的款。花同样的钱买更高的配置已经成为了大家都喜欢的事儿,今天我们来讲讲4000元左右的家用投影仪,给大家整理推荐一下。 像大眼橙、当贝、坚果这些牌子在4000价位都有不错的选择。下面主要…

javax.validation常用注解

javax.validation 提供了一系列的注解,用于在 Java Bean 中对属性进行验证,主要有以下几种: NotNull:验证对象不可为 null;NotEmpty:验证字符串,数组,Collection,Map不可…

弱网测试,Network Link Conditioner你知多少

网络环境的好坏,有时会让你的产品带给用户完全不同的体验,作为开发者,在开发项目过程中,我们需要进行对于网络环境的调试。Mac环境下模拟慢速网络可以使用苹果官方提供的工具: Network Link Conditioner 具体操作步骤…

这就是多态吗

文章目录 多态的概念多态的实现及定义多态构成的条件虚函数虚函数的重写虚函数重写的两个例外协变析构函数的重写 重载、覆盖(重写)、隐藏(重定义)的对比 抽象类概念接口继承和实现继承 多态的原理虚函数表多态的原理动态绑定与静…

【复杂网络建模】——通过平均度和随机概率构建ER网络(Python)

🤵‍♂️ 个人主页:Lingxw_w的个人主页 ✍🏻作者简介:计算机科学与技术研究生在读 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 &#x1f4a…

Spring Validation 接口入参校验

一、前言 JSR 是 Java Specification Requests 的缩写,含义为 JAVA 规范提案。 JSR 303 - Bean Validation 规范, 正是一套基于 JavaBean 参数校验的标准。 Hibernate Validator 是 JSR 303 的实现,它提供了 JSR 303 规范中所有约束(constrai…