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

news2024/11/16 19:51:06

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.coloradmin.cn/o/1415125.html

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

相关文章

mysql INSERT数据覆盖现有元素(若存在)

INSERT...ON DUPLICATE KEY UPDATE的使用 如果指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则会更新ON DUPLICATE KEY UPDATE关键字后面的字段值。 例如,如果列a被定义为UNIQUE&#xff0…

P1226 【模板】快速幂题解

题目 给你三个整数a,b,p,求 mod p。 输入输出格式 输入格式 输入只有一行三个整数,分别代表a,b,p。 输出格式 输出一行一个字符串a^b mod ps,其中a,b,p分别为题目给定的值,s为运算结果。 输入输出样例 输入样例 2 10 9 …

三角函数、反三角函数

一、三角函数 二、反三角函数:已知三角函数值,反算角度大小 因为严格单调函数才有反函数一个y对应一个x,显然ysinx,ycosx,ytanx在其定义域并不是严格单调,所以需要人为划定范围。 1. 研究yarcsinx、yarcco…

第十六回 花和尚单打二龙山 青面兽双夺宝珠寺-FreeBSD基本操作:查找程序和文件的路径

杨志最终没有跳崖而是怅然下了冈子。那十四个人醒来,后悔没有听杨志的话,现在事情已经发生了,大家只好商量把所有的错推到杨志身上,说他和强盗合伙劫了生辰纲。 杨志到酒店吃酒没钱付账,跟店家打起来,却原…

编写nginx脚本,安装失败

这是我写的nginx脚本-(正确的,已经修改过的) 这是我在运行脚本是出现的问题 这是我在nginx官网上粘贴的内容,请注意我用红笔画的地方,与第一张我写的脚本图片作对比,会发现多出现两个转义符号\。第二幅图就…

mysql连接查询,备忘

mysql连接查询 在MySQL数据库查询中,经常会使用到多表查询,本篇介绍mysql中的内连接,左连接,右连接。 用作备忘。 使用两个简单的数据表做展现。 表A AidAvalue1a0012a0023a0034a0045a005 表B BidBvalue1b0012b0023b0034b0046b…

Acwing-语法基础练习

目录 1. 非常基础的C (面向程序) 框架 2. 一些基础数据类型 3.变量的输入输出 4.ACWing题库-第1题&#xff1a;AB 5.四则运算(只整理一部分较难的) 6.数据类型转换 寒假自学用,记录Acwing题目。 语言&#xff1a;C 1. 非常基础的C (面向程序) 框架 #include <iostre…

Android13系统导航栏添加隐藏导航栏功能按钮

最近有个项目&#xff0c;客户要求在底部导航栏中添加一个可以隐藏整个导航栏的功能按钮&#xff0c;效果如下图&#xff1a; 具体方法如下&#xff1a; 1. 在frameworks/base做如下修改&#xff1a; diff --git a/packages/SystemUI/res/layout/navigation_bar.xml b/packag…

后端学习:数据库MySQL学习

数据库简介 数据库&#xff1a;英文为 DataBase&#xff0c;简称DB&#xff0c;它是存储和管理数据的仓库。   接下来&#xff0c;我们来学习Mysql的数据模型&#xff0c;数据库是如何来存储和管理数据的。在介绍 Mysql的数据模型之前&#xff0c;需要先了解一个概念&#xf…

YOLO自制数据集及训练

使用 Make Sense 网站进行标注 https://www.makesense.ai/可以让AI帮你先标一下 一定要点一下 + ,不然不会加进去 导出标签

混淆矩阵、准确率、查准率、查全率、DSC、IoU、敏感度的计算

1.背景介绍 在训练的模型的时候&#xff0c;需要评价模型的好坏&#xff0c;就涉及到混淆矩阵、准确率、查准率、查全率、DSC、IoU、敏感度的计算。 2、混淆矩阵的概念 所谓的混淆矩阵如下表所示&#xff1a; TP:真正类&#xff0c;真的正例被预测为正例 FN:假负类&#xf…

OSI七层模型 | TCP/IP模型 | 网络和操作系统的联系 | 网络通信的宏观流程

文章目录 1.OSI七层模型2.TCP/IP五层(或四层)模型3.网络通信的宏观流程3.1.同网段通信3.2.跨网段通信 1.OSI七层模型 在计算机通信诞生之初&#xff0c;不同的厂商都生产自己的设备&#xff0c;都有自己的网络通讯标准&#xff0c;导致了不同厂家之间各种协议不兼容&#xff0…

Linux文本三剑客---grep

grep&#xff08;从文本或字符串种过滤特定内容。&#xff09; 格式&#xff1a;Usage: grep [OPTION]... PATTERNS [FILE]... 常用选项&#xff1a; -E 等价于 egrep 扩展正则 -i 忽略大小写 -w 匹配单词 -o 仅显示匹配内容 -r 递归匹配 -c 统计匹配的行数 -v 取反 -n 行号 -A…

ABAP 状态栏排除某些按钮

ABAP 状态栏排除某些按钮 GUI State状态栏 在状态栏这里有这些按钮&#xff0c;现在在导出界面要排除掉这些按钮&#xff1a; 将要排除的按钮追加到gt_code内表&#xff1a; gt_fcode功能码内表的定义 DATA:gt_fcode TYPE TABLE OF sy-ucomm,完整程序 *&---------…

SpringBoot不同的@Mapping使用

文章目录 一、介绍二、使用 一、介绍 一般Mapping类注解在Spring框架中用于将HTTP请求映射到对应的处理器方法。它们各自对应于不同类型的HTTP方法&#xff0c;主要用于RESTful Web服务中。以下是每个注解的作用&#xff1a; GetMapping: 用于映射HTTP GET请求到处理器方法。通…

Android读写文件,适配Q以上

Android Q升级了文件系统&#xff0c;访问文件不仅仅是说动态权限了&#xff0c;有各种限制。权限什么的就不赘述了&#xff0c;下面介绍一下在10以上的系统中访问文件。 首先是打开文件管理器 /*** 打开文件管理器 存储卡和外接U盘都可以访问*/public void openFileManager()…

【揭秘】ForkJoinTask全面解析

内容摘要 ForkJoinTask的显著优点在于其高效的并行处理能力&#xff0c;它能够将复杂任务拆分成多个子任务&#xff0c;并利用多核处理器同时执行&#xff0c;从而显著提升计算性能&#xff0c;此外&#xff0c;ForkJoinTask还提供了简洁的API和强大的任务管理机制&#xff0c…

Blender教程-编辑模式点线面的选择-06

一、新建立方体 ShiftA新建立方体用于演示 二、模式切换 按TAB键切换为编辑模式 点模式 在点模式下可以选择中物体的顶点。 线模式&#xff08;边模式&#xff09; 面模式 在熟悉编辑模式下的点线面基础操作以后&#xff0c;我们后续建模会以此为基础教程。

D. Epic Transformation(堆+贪心)

思路&#xff1a;我们删的策略是从次数多的数开始删&#xff0c;每次取两种不同的数&#xff0c;每种删去一个&#xff0c;然后放回堆中。 代码&#xff1a; void solve(){int n;cin >> n;map<int,int>mp;for(int i 1;i < n;i ){int x;cin >> x;mp[x] …

CAD-autolisp(二)——选择集、命令行设置对话框、符号表

目录 一、选择集1.1 选择集的创建1.2 选择集的编辑1.3 操作选择集 二、命令行设置对话框2.1 设置图层2.2 加载线型2.3 设置字体样式2.4 设置标注样式&#xff08;了解即可&#xff09; 三、符号表3.1 简介3.2 符号表查找3.2 符号表删改增 一、选择集 定义&#xff1a;批量选择…