鸿蒙中,UIAbility组件启动模式(3种分别是Singleton(单实例模式)Multiton(多实例模式)Specified(指定实例模式))

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

Singleton(单实例模式)

Multiton(多实例模式)

Specified(指定实例模式)

Singleton(单实例模式)

singleton启动模式为单实例模式,也是默认情况下的启动模式。

简单理解就是,当我们每次调用startAbility()方法时,如果应用进程中该类型的UIAbility实例已经存在,则复用已经存在的UIAbility实例。(并未创建一个新的UIAbility实例,而是进入该UIAbilty的onNewWant()回调,不会进入其onCreate()和onWindowStageCreate()生命周期回调)可以理解为系统中只存在唯一一个该UIabilty实例,即在最近任务列表中仅仅只存在一个该UIAbility实例。

Singleton启动模式需要在module.json5配置文件中的launchType字段配置为singleton

Multiton(多实例模式)

multiton启动模式为多实例模式,每次调用startAbility()方法时,与Singleton(单实例模式)不同是都会在应用进程中创建一个新的该类型UIAbility实例。(即使最近的列表中该实例)

multiton启动模式需要在module.json5配置文件中的launchType字段配置为multiton

Specified(指定实例模式)

specified启动模式为指定实例模式,就好比在特定的场景使用(文档应用中每次新建都希望能创建一个新的文档,或者是重复打开一个已经保存的文档希望打开的都是同一个文档实例)。

假设有两个实例,EntryAbility和specifiedAbility。

EntryAbility调用startAbility()方法,并在Want的parameters字段设置唯一的Key值。

系统在拉起SpecifiedAbilty之前,会先进入对应的AbilityStage的onAcceptWant()生命周期回调,获取用于标识目标UIAbility的Key值。

系统根据Key值来匹配UIAbility。

1.如果匹配成功,则会启动UIAbility实例,进入onNewWant()生命周期回调。

2.如果匹配不成功,则会创建一个新的UIAbility实例,并进入该UIAbility实例的onCrate()生命周期回调和onWindowStageCreate()生命周期回调。

新建文档就是跟多实例模式类似,一直创建新的文档。(一直点击一直创建新的文档),具体用法还要根据key值来确定

打开已保存的文档类似单例模式,  具体用法还要根据key值来确定

specified启动模式需要在module.json5配置文件中的launchType字段配置为specified

在EntryAbility中,调用startAbility()方法时,可以在want参数中传入了自定义参数instanceKey作为唯一标识符,以此来区分不同的UIAbility实例。示例中instanceKey的value值设置为字符串'KEY'。

  1. // 在启动指定实例模式的UIAbility时,给每一个UIAbility实例配置一个独立的Key标识
  2. // 例如在文档使用场景中,可以用文档路径作为Key标识

开发者根据业务在SpecifiedAbility的onAcceptWant()生命周期回调设置该UIAbility的标识。示例中标识设置为SpecifiedAbilityInstance_KEY。

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

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

相关文章

Linux第107步_Linux之PCF8563实验

使用PCF8563代替内核的RTC,可以降低功耗,提高时间的精度。同时有助于进一步熟悉I2C驱动的编写。 1、了解rtc_time64_to_tm()和rtc_tm_to_time64() 打开“drivers/rtc/lib.c” /* * rtc_time64_to_tm - Converts time64_t to rtc_time. * Convert seco…

上海正控ZK880 变频器基本操作

1,变频器参数设置: F0-02设置成2;(通过modbus指令进行开机和关机的动作;) Fd-00设置成5005; Fd-01设置成0; Fd-02设置成1; Fd-03设置成2ms; 2.硬件连接&a…

测试环境管理的最佳实践:从搭建到维护的实战指南

引言 在电商公司的一次“双十一”大促前,测试团队发现预发布环境的订单支付接口频繁超时。经过排查,发现测试环境的Redis版本与生产环境不一致,导致缓存策略失效。这一事件直接导致上线延迟48小时,损失数百万营收。测试环境的稳定性直接决定了软件交付的质量与效率。本文将…

利用亚马逊云科技RDS for SQL Server配置向量数据存储

生成式人工智能(AI)正迎来又一个快速发展期,引起了开发者们的广泛关注。将生成式能力集成到商业服务和解决方案中变得非常重要。当前的生成式AI解决方案是机器学习和深度学习模型逐步进化迭代的结果。从深度学习到生成式AI的质变飞跃主要是由…

YOLOV8的学习记录(一) 环境配置和安装

YOLO8的官网地址:YOLOv8 - Ultralytics YOLO Docs • YOLOV8的环境要求: YOLO集成在ultralytics库中,ultralytics库的环境要求: Python>3.7 PyTorch>1.10.0 在按照所需python版本新建好的conda环境中安装好torch&#x…

如何在 IntelliJ IDEA 中使用 Bito AI 插件

如何在 IntelliJ IDEA 中使用 Bito AI 插件 Bito: On-Demand AI Code Reviews Bito AI 插件是一个智能开发工具,能够帮助开发者提升编码效率,自动化生成代码、注释、单元测试等。本文将详细介绍 Bito AI 插件在 IntelliJ IDEA 中的使用方法&#xff0c…

如何升级Python版本。以下是详细的步骤和注意事项:检查当前Python版本:在命令行或终端中输入以下命令来查看当前安装的Python版本: bash复制代

升级Python版本。以下是详细的步骤和注意事项: 检查当前Python版本:在命令行或终端中输入以下命令来查看当前安装的Python版本: bash复制代码 python --version 这将显示你当前使用的Python版本。 下载最新版本的Python:访问Py…

SpringBoot(7)-Swagger

目录 一、是什么 二、SpringBoot集成Swagger 三、配置Swagger 3.1 配置文档信息 3.2 配置扫描接口 3.3 配置Swagger开关 3.4 配置API分组 3.5 实体配置 四、常用注解 五、总结 一、是什么 是一款API框架,API文档和API定义同步更新,可以在线测…

C++效率掌握之STL库:string底层剖析

文章目录 1.学习string底层的必要性2.string类对象基本函数实现3.string类对象的遍历4.string类对象的扩容追加5.string类对象的插入、删除6.string类对象的查找、提取、大小调整7.string类对象的流输出、流提取希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力…

SCI学术论文图片怎么免费绘制:drawio,gitmind

SCI学术论文图片怎么免费绘制 目录 SCI学术论文图片怎么免费绘制overleaf怎么图片不清晰怎么办SCI学术论文图片怎么导出pdfdrawiogitmind**1. 使用在线工具****Lucidchart****2. Draw.io****3. ProcessOn****4. 使用桌面工具****Dia****5. 使用Markdown工具(如Typora)**如果你…

对于RocksDB和LSM Tree的一些理解,以及TiDB架构初识

LSM Tree的读写过程 HBase、LevelDB,rocksDB(是一个引擎)底层的数据结构是LSM Tree适合写多读少的场景,都是追加写入内存中的MemTable,写入一条删除(或修改)标记,而不用去访问实际的…

Java 设计模式之迭代器模式

文章目录 Java 设计模式之迭代器模式概述UML代码实现Java的迭代器 Java 设计模式之迭代器模式 概述 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。 UML Iterator:迭代器接口&#xff…

【原创】解决vue-element-plus-admin无法实现下拉框动态控制表单功能,动态显隐输入框

前言 目前使用vue-element-plus-admin想要做一个系统定时任务功能,可以选择不同的定时任务类型,比如使用cron表达式、周期执行、指定时间执行等。每种类型对应不同的输入框,需要动态显隐输入框才行,但是这个vue-element-plus-adm…

上位机学习之串口通信与温湿度项目实战

文章目录 一、串口通信与温湿度项目实战1、学习串口通信硬件:巩固RS-485串口硬件和通信基础知识1.1、串行通信的数据流和格式1.2、串口通信参数设置1.3、modbus协议基础1.4、数据存储和功能代码1.5、modbus通信报文分析 2、主-从通信仿真测试2.1、组件设计2.2、创建…

深度求索—DeepSeek API的简单调用(Java)

DeepSeek简介 DeepSeek(深度求索)是由中国人工智能公司深度求索(DeepSeek Inc.)研发的大规模语言模型(LLM),专注于提供高效、智能的自然语言处理能力,支持多种场景下的文本生成、对…

Zotero7 从下载到安装

Zotero7 从下载到安装 目录 Zotero7 从下载到安装下载UPDATE2025.2.16 解决翻译api异常的问题 下载 首先贴一下可用的链接 github官方仓库:https://github.com/zotero/zotero中文社区:https://zotero-chinese.com/官网下载页:https://www.z…

沃德校园助手系统php+uniapp

一款基于FastAdminThinkPHPUniapp开发的为校园团队提供全套的技术系统及运营的方案(目前仅适配微信小程序),可以更好的帮助你打造自己的线上助手平台。成本低,见效快。各种场景都可以自主选择服务。 更新日志 V1.2.1小程序需要更…

Spring Boot (maven)分页3.0版本 通用版

前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…

解锁机器学习算法 | 线性回归:机器学习的基石

在机器学习的众多算法中,线性回归宛如一块基石,看似质朴无华,却稳稳支撑起诸多复杂模型的架构。它是我们初涉机器学习领域时便会邂逅的算法之一,其原理与应用广泛渗透于各个领域。无论是预测房价走势、剖析股票市场波动&#xff0…

广告深度学习计算:阿里妈妈大模型服务框架HighService

一、背景 HighService(High-Performance Pythonic AI Service) 是在支持阿里妈妈业务过程中,不断提炼抽象出的高性能Python AI服务框架,支持视频、图文、LLM等多种模型,能够显著加快模型的推理速度,提高集群的资源利用效率。随着S…