UIAbility组件的启动模式

news2024/9/20 13:31:23

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

1、singleton启动模式

        单实例模式,也是默认情况下的启动模式。系统中只存在唯一一个该UIAbility实例,即在最近任务列表中只存在一个该类型的UIAbility实例。

        每次调用startAbility()方法时,如果应用进程中该类型的UIAbility实例已经存在,则复用系统中的UIAbility实例。 

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

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

         

2、multiton启动模式

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

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

{
  "module": {
    ...
    "abilities": [
      {
        "launchType": "multiton",
        ...
      }
    ]
  }
}

         

3、specified启动模式

        指定实例模式,针对一些特殊场景使用(例如文档应用中每次新建文档希望都能新建一个文档实例,重复打开一个已保存的文档希望打开的都是同一个文档实例)。

        a、在SpecifiedAbility中,将module.json5配置文件的launchType字段配置为specified。

{
  "module": {
    ...
    "abilities": [
      {
        "launchType": "specified",
        ...
      }
    ]
  }
}

        b、调用方启动SpecifiedAbility的函数逻辑

// 获取UIAbilityContext
let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;
// context为调用方UIAbility的UIAbilityContext;
// 创建want
let want: Want = {
   deviceId: '', // deviceId为空表示本设备
   bundleName: 'com.samples.stagemodelabilitydevelop',
   abilityName: 'SpecifiedFirstAbility',
   moduleName: 'entry', // moduleName非必选
   parameters: {
       // 自定义信息
       instanceKey: this.KEY_NEW
   }
};
// 拉起UIAbility
context.startAbility(want).then(() => {
   hilog.info(DOMAIN_NUMBER, TAG, 'Succeeded in starting SpecifiedAbility.');
}).catch((err: BusinessError) => {
    hilog.error(DOMAIN_NUMBER, TAG, `Failed to start SpecifiedAbility. Code is ${err.code}, message is ${err.message}`);
})
             

        c、被调用方SpecifiedAbility对应的AbilityStage文件

 import { AbilityStage, Want } from '@kit.AbilityKit';

 export default class MyAbilityStage extends AbilityStage {
   onAcceptWant(want: Want): string {
     // 在被调用方的AbilityStage中,针对启动模式为specified的UIAbility返回一个UIAbility实例对应的一个Key值
     // 当前示例指的是module1 Module的SpecifiedAbility
     if (want.abilityName === 'SpecifiedFirstAbility' || want.abilityName === 'SpecifiedSecondAbility') {
       // 返回的字符串Key标识为自定义拼接的字符串内容
       if (want.parameters) {
         return `SpecifiedAbilityInstance_${want.parameters.instanceKey}`;
       }
     }
     // ...
     return 'MyAbilityStage';
   }
 }

        

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

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

相关文章

BMS杂谈1

1、LTC凌特和ADI是一家 凌力尔特(Linear Technology)是一家模拟芯片公司,成立于1981年,由‌Bob Swanson和‌Bob Dobkin创立,总部位于硅谷。2016年,凌力尔特被ADI公司以约150亿美元的价格收购。收购完成后&a…

如何免费获取乡镇级边界数据geoJson数据

如何免费获取乡镇级边界数据geoJson数据 我们可以通过 阿里云数据可视化平台 ,可以获取到中国各个省份/区级/县级的json数据,但是区级和县级,并没有包含街道和乡镇的数据 获取乡镇级边界数据 1.下载bigemap全能版 安装好后选择你要导出的…

数据链路层 III(介质访问控制)【★★★★★】

(★★)代表非常重要的知识点,(★)代表重要的知识点。 介质访问控制所要完成的主要任务是:为使用介质的每个结点隔离来自同一信道上其他结点所传送的信号,以协调活动结点的传输。 下图所示是广播…

实测可用,ComfyUI工作流:个性二维码设计

前言 ComfyUI工作流:个性二维码设计 朋友们,还在花钱去找别人设计二维码吗? 其实只需要一个comfyui工作流就能解决了。 你是否想过,通过简单的文本描述就能生成惊艳的视觉效果?又或者,你是否想过将二维码…

[数据集][目标检测]道路积水检测数据集VOC+YOLO格式2699张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2699 标注数量(xml文件个数):2699 标注数量(txt文件个数):2699 标注…

Leetcode Java学习记录——动态规划基础

概念 首先想到递归、分治。动态规划本质也一样。 共性:找到重复子问题 差异性:有最优子结构,中途可以淘汰次优解。 动态规划是分治最优子结构。 例题 斐波那契数列 递归实现,时间复杂度是指数级。 最基础的写法为 int fib(i…

LCP 633 平方数之和 [leetcode - 8]

最近是在研究双指针啊,leetcode刷的题都是这方面的。都记录在最近的文章里,大家有兴趣可以去我主页看看 LCP633 平方数之和 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 b2 c 。 示例 1: 输入&…

工业相机错峰启动优化方案

为了解决9台工业相机的错峰启动问题,可以通过LabVIEW程序来实现相机启动的优化。这样可以减少USB带宽的瞬间占用,并避免多个相机同时启动导致的资源冲突。下面是实现错峰启动的思路: 1. 分析启动顺序: 分组管理: 将9台相机分为多个组&#xf…

【Datawhale X 魔搭 】AI夏令营第四期大模型方向,Task4:源大模型微调实战(持续更新)

1.1 大模型微调技术简介 模型微调也被称为指令微调(Instruction Tuning)或者有监督微调(Supervised Fine-tuning, SFT),该方法利用成对的任务输入与预期输出数据,训练模型学会以问答的形式解答问题&#xf…

exocad椅旁设计工作流程是指的什么,椅旁设计工作流程对初学者有什么帮助

随着牙科智能技术的不断进步,exocad软件的椅旁设计工作内容越来越受到重视。此项工作不仅代表了牙科数字化的新发展趋向,也为牙科专业人员,尤其是新手提供了方便高效的工作方法。本文将详细分析exocad椅旁设计工作流程是指的什么,…

神经网络算法 - 一文搞懂Transformer

本文将从Transformer的本质、Transformer的原理、Transformer架构改进三个方面,带您一文搞懂Transformer。 Transformer架构:主要由输入部分(输入输出嵌入与位置编码)、多层编码器、多层解码器以及输出部分(输出线性层…

神经网络算法--文搞懂LSTM(长短期记忆网络)

本文将从LSTM的本质、LSTM的原理、LSTM的应用 三个方面,带您一文搞懂长短期记忆网络Long Short Term Memory | LSTM。 RNN 面临问题:RNN(递归神经网络)在处理长序列时面临的主要问题:短时记忆和梯度消失/梯度爆炸。 梯…

智慧导览系统主要在哪些场景有应用

随着信息化和智能化的快速发展,智慧导览系统作为一种新型导览工具,在多个领域展现出其独特的应用价值。该系统通过集合互联网、人工智能、大数据分析等技术,为用户提供更加便捷、高效的导览服务。以下将详细给大家介绍智慧导览系统主要在哪些…

获取阿里云Docker镜像加速器地址

注册并登录阿里云账号:首先,你需要有一个阿里云账号。如果还没有,可以在阿里云官网注册。 访问容器镜像服务:登录后,进入“产品与服务”,找到“容器服务”或“容器镜像服务”。阿里云容器服务 找到镜像加…

Kolmogorov-Arnold Networks——高效、可解释的神经网络的新前沿

引言 神经网络一直处于人工智能发展的前沿,从自然语言处理和计算机视觉到战略游戏、医疗保健、编码、艺术甚至自动驾驶汽车,无所不包。然而,随着这些模型的规模和复杂性不断扩大,它们的局限性正成为重大缺陷。对大量数据和计算能…

gazebo下使用Fast-planner配置(包含mpc局部规划+控制Gazebo小车以及FastPlanner配置)

源码链接: https://github.com/USE-jx/NMPC_CASADI_CPP?tabreadme-ov-file #这是NMPC的 里面有Fast-Planner,但编译可能缺少东西,所以再放一个Fast-Planner的,可以装装缺少的库 https://github.com/HKUST-Aerial-Robotics/Fast-P…

centos7.9系统安装cloudpods

1. 简介: Cloudpods 是一款简单、可靠的企业IaaS资源管理软件。帮助未云化企业全面云化IDC物理资源,提升企业IT管理效率。 Cloudpods 帮助客户在一个地方管理所有云计算资源。统一管理异构IT基础设施资源,极大简化多云架构复杂度和难度&…

1553B总线电缆网络

1553B总线电缆网络 MIL-STD-1553B总线全称为飞行器内部时分命令/响应多路数据总线(Aircraft Internal Time Division Command/Response Multiplex Data Bu),它是由美国SAE的AE-9E委员会在军方和工业界的支持下,我国与之对应的标准…

Ubuntu清除缓存的方法--防止系统崩溃

前情提要:虚拟机出现过好几次的崩溃,终于同事发给了一个可以清除缓存的 1)崩溃1:之前将虚拟机放置在某盘中,该盘后续一直有别的东西存入,导致ubuntu直接打不开,后续就将虚拟机直接放在电脑单独…

洛谷 P1094 [NOIP2007 普及组] 纪念品分组

题目背景 NOIP2007 普及组 T2 题目描述 元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品, 并且…