第十七讲_HarmonyOS应用开发Stage模型应用组件

HarmonyOS应用开发Stage模型应用组件

  • 1. 应用级配置
  • 2. Module级配置
  • 3. Stage模型的组件
    • 3.1 AbilityStage
      • 3.1.1 AbilityStage的创建和配置
      • 3.1.2 AbilityStage的生命周期回调
      • 3.1.3 AbilityStage的事件回调:
    • 3.2 UIAbility
      • 3.2.1 UIAbility生命周期
      • 3.2.3 UIAbility启动模式

1. 应用级配置

应用级配置在AppScope目录下的app.json5配置文件中。

  • bundleName:用于标识应用的唯一性。
  • icon:应用图标
  • label:应用名称
  • versionCode:用于标识应用的版本号
  • versionName:版本号的文字描述
{"app": {"bundleName": "com.dake.myapplication","vendor": "example","versionCode": 1000000,"versionName": "1.0.0",// 读取resouces/media目录下app_icon"icon": "$media:app_icon",// 读取resouces/element目录下string.json文件中的app_name"label": "$string:app_name"}
}

2. Module级配置

Module级配置在Module_Name/src/main目录下的module.json5配置文件中。

  • abilities:配置Ability
  • deviceTypes:表明当前的Module支持在该设备上运行。
  • requestPermissions:该标签用于声明需要申请权限的名称、申请权限的原因以及权限使用的场景。
{"module": {// module的名称"name": "entry",// module的类型"type": "entry","description": "$string:module_desc","mainElement": "EntryAbility","deviceTypes": ["phone","tablet"],"deliveryWithInstall": true,"installationFree": false,"pages": "$profile:main_pages","abilities": [{"name": "EntryAbility",// 指定UIAbility的类路径"srcEntry": "./ets/entryability/EntryAbility.ts","description": "$string:EntryAbility_desc",// 入口图标"icon": "$media:icon",// 入口名称"label": "$string:EntryAbility_label","startWindowIcon": "$media:icon","startWindowBackground": "$color:start_window_background","exported": true,"skills": [{"entities": ["entity.system.home"],"actions": ["action.system.home"]}]}]}
}

3. Stage模型的组件

在这里插入图片描述

3.1 AbilityStage

AbilityStage是一个Module级别的组件容器:

  • 应用的HAP在首次加载时会创建一个AbilityStage实例,可以对该Module进行初始化等操作。
  • 一个Module拥有一个AbilityStage

一个Module编译后生成一个HAP文件,详细了解可以查看另一篇博文:HarymonyOS应用程序包介绍

3.1.1 AbilityStage的创建和配置

DevEco Studio默认工程中未自动生成AbilityStage,如需要使用AbilityStage的能力,可以手动新建一个AbilityStage文件。

  1. 创建一个 ArkTS File
  2. 文件中创建一个类,并继承AbilityStage
  3. Module配置文件module.json5中配置
{"module": {// srcEntry指定AbilityStage的类路径"srcEntry": "./ets/myabilitystage/MyAbilityStage.ets",}
}

3.1.2 AbilityStage的生命周期回调

  • onCreate():在开始加载对应 Module 的第一个 UIAbility 实例之前会先创建 AbilityStage,并在 AbilityStage 创建完成之后执行其 onCreate()生命周期回调。

3.1.3 AbilityStage的事件回调:

  • onAcceptWant():UIAbility 指定实例模式(specified)启动时候触发的事件回调。
  • onConfigurationUpdated():当系统全局配置发生变更时触发的事件,系统语言、深浅色等,配置项目前均定义在 Configuration 类中。
  • onMemoryLevel():当系统调整内存时触发的事件。

3.2 UIAbility

UIAbility组件是一种包含UI的应用组件,主要用于和用户交互。

  • UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口。
  • 一个应用可以包含一个或多个UIAbility组件

3.2.1 UIAbility生命周期

UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态。
在这里插入图片描述

  • Create状态为在应用加载过程中,UIAbility实例创建完成时触发,系统会调用onCreate()回调。
  • 进入Foreground状态之前,系统会创建一个WindowStageWindowStage创建完成后会进入onWindowStageCreate()回调;UIAbility实例切换至前台时触发onForeground()回调。
  • UIAbility实例切换至后台时触发onBackground()回调。
  • 在进入Destroy状态之前,UIAbility实例销毁之前,先进入WindowStageonWindowStageDestroy()回调;UIAbility实例销毁时触发onDestroy()回调。

3.2.3 UIAbility启动模式

Module的配置文件 module.json5 中配置

{"module": {"abilities": [{"launchType": "singleton"}]}
}
  • singleton 启动模式为单实例模式,默认启动模式。系统中只存在唯一一个该 UIAbility 实例。
  • multiton 启动模式为多实例模式,每次调用 startAbility()方法时,都会在应用进程中创建一个新的该类型 UIAbility 实例。
  • specified 启动模式为指定实例模式。

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

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

相关文章

CSAPP fall2015 深入理解计算机系统 Cache lab详解

Cache Lab cache lab 缓存实验 代码下载 从CSAPP上面下载对应的lab代码 http://csapp.cs.cmu.edu/3e/labs.html 环境准备 需要安装 valgrind。可以参考文章Valgrind centos。 安装好以后执行valgrind --version可以看到版本号。 Cache simulator cache simulator not a …

ART: Automatic multi-step reasoning and tool-use for large language models 导读

ART: Automatic multi-step reasoning and tool-use for large language models 本文介绍了一种名为“自动推理和工具使用(ART)”的新框架,用于解决大型语言模型(LLM)在处理复杂任务时需要手动编写程序的问题。该框架可…

【音视频原理】音频编解码原理 ③ ( 音频 比特率 / 码率 | 音频 帧 / 帧长 | 音频 帧 采样排列方式 - 交错模式 和 非交错模式 )

文章目录 一、音频 比特率 / 码率1、音频 比特率2、音频 比特率 案例3、音频 码率4、音频 码率相关因素5、常见的 音频 码率6、视频码率 - 仅做参考 二、音频 帧 / 帧长1、音频帧2、音频 帧长度 三、音频 帧 采样排列方式 - 交错模式 和 非交错模式1、交错模式2、非交错模式 一…

排序问题上机考试刷题

排序与查找可以说是计算机领域最经典的问题,排序和查找问题在考研机试真题中经常出现。排序考点在历年机试考点中分布广泛。排序既是考生必须掌握的基本算法,又是考生 学习其他大部分算法的前提和基础。首先学习对基本类型的排序。对基本类型排序&#x…

【C++中的STL】函数对象

函数对象 函数对象概念谓词概念 内建函数对象算术仿函数关系仿函数逻辑仿函数(基本用不到) 函数对象概念 重载函数调用操作符的类,其对象常称为函数对象,函数对象使用重载的()时。行为类似函数调用,也叫仿函数。 函数…

4.F1 评分机器学习模型性能的常用的评估指标

F1评分作为机器学习领域中的一个综合性评价指标,旨在在准确率和召回率之间寻求平衡,进而提供对模型性能全面评估的手段。本文将深入探讨F1评分的定义、计算方法、应用领域、案例研究以及未来发展方向,力求为读者提供详实而全面的了解。 一.F…

osgEarth真HelloWorld

osgEarth真HelloWorld vcpkg installtests vcpkg install osgEarth安装指南 https://docs.osgearth.org/en/latest/install.html, 预先设置ports/osg/portfile.cmake GL3 否则调用osg相关功能时会出现如下提示 OpenSceneGraph does not define OSG_GL3_AVAILABLE; …

语音方向精典论文品读_HuBERT

英文名称: HuBERT: Self-Supervised Speech Representation Learning by Masked Prediction of Hidden Units 中文名称: HuBERT:通过隐藏单元的屏蔽预测进行自监督语音表示学习 链接: http://arxiv.org/abs/2106.07447v1 代码: https:// github.com/pytorch/fairseq…

vertica10.0.0单点安装_ubuntu18.04

ubuntu的软件包格式为deb,而rpm格式的包归属于红帽子Red Hat。 由于项目一直用的vertica-9.3.1-4.x86_64.RHEL6.rpm,未进行其他版本适配,而官网又下载不到vertica-9.3.1-4.x86_64.deb,尝试通过alian命令将rpm转成deb,但…

盘古信息IMS OS 数垒制造操作系统+ 产品及生态部正式营运

启新址吉祥如意,登高楼再谱新篇。2024年1月22日,广东盘古信息科技股份有限公司新办公楼层正式投入使用并举行了揭牌仪式,以崭新的面貌、奋进的姿态开启全新篇章。 盘古信息总部位于东莞市南信产业园,现根据公司战略发展需求、赋能…

redis过期事件监听、可以做延时任务 第二篇(简单)

在使用redis时,所有的key都要设置过期时间,过期之后,redis就会把对应的key清除掉。 此方法可以监听redis的key失效,在失效时做一些逻辑处理 redis过期监听 不像mq有保证 不推荐用来弄需要有保证的业务 现象: redis …

AWS 专题学习 P12 (CloudWatch、CloudTrail、AWS Config)

文章目录 专题总览1. CloudWatch1.1 Amazon CloudWatch Metrics1.2 CloudWatch Metric Streams1.3 CloudWatch LogsCloudWatch Logs - SourcesCloudWatch Logs Metric Filter & InsightsCloudWatch Logs – S3 ExportCloudWatch Logs SubscriptionsCloudWatch Logs Aggrega…

MATLAB|【完全复现】含可再生能源和储能的区域微电网的最优运行(考虑鲁棒性和不确定性)【多阶段鲁棒调度模型】

目录 主要内容 模型研究 一、区域微网模型 二、模型优化流程​ 结果一览 下载链接 主要内容 该程序实现了一种基于可再生能源和储能的区域微电网的多阶段优化调度方法,该方法可以同时保证优化调度方案的鲁棒性和非预测性。模型考虑两类不确定性&…

MySQL索引类型及数据结构【笔记】

1 索引类型 返回面试宝典 主键索引(PRIMARY):数据列不允许重复,不允许为NULL,一个表只能有一个主键。 唯一索引(UNIQUE):数据列不允许重复,允许为NULL,一个表允许多个列创建唯一索引…

AssertionError: Torch not compiled with CUDA enabled

目录 报错查看已安装的torch的版本卸载安装GPU版本的torch查看cuda版本手工安装通过pip命令手工安装。 结果更新cuda到12.1大功告成 报错 经查阅,这个问题是因为conda默认安装的是CPU版本的torch,应该使用GPU版本的。 查看已安装的torch的版本 pip li…

Apipost数据库连接使用

Apipost提供了数据库连接功能,在接口调试时可以使用数据库获取入参或进行断言校验。目前的Apipost支持:Mysql、SQL Sever、Oracle、Clickhouse、达梦数据库、PostgreSQL、Redis、MongoDB 8种数据库的连接操作 新建数据库连接: 在「项目设置…

Doris 与 Clickhouse 对比(一)

1. 常用引擎 ☕️ Doris 表数据模型 duplicate key 🎬 场景:适用于数据无需提前聚合的分析业务。 ⚠️ 注意点:只指定排序列,相同的行并不会合并。 unique key 🎬 场景:适用于有更新需求的业务。 ⚠…

Optional lab: Linear Regression using Scikit-LearnⅠ

scikit-learn是一个开源的、可用于商业的机器学习工具包,此工具包包含本课程中需要使用的许多算法的实现 Goals In this lab you will utilize scikit-learn to implement linear regression using Gradient Descent Tools You will utilize functions from sci…

计算机设计大赛 垃圾邮件(短信)分类算法实现 机器学习 深度学习

文章目录 0 前言2 垃圾短信/邮件 分类算法 原理2.1 常用的分类器 - 贝叶斯分类器 3 数据集介绍4 数据预处理5 特征提取6 训练分类器7 综合测试结果8 其他模型方法9 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 垃圾邮件(短信)分类算…

MySQL DDL DML DQL DCL 通用语法

文章目录 DDL(数据定义语言)数据库操作表操作 DML(数据操作语言)添加数据注意事项 更新和删除数据 DQL(数据查询语言)基础查询条件查询聚合查询(聚合函数)分组查询排序查询分页查询D…