第十七讲_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.hqwc.cn/news/433272.html

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

相关文章

信号的采样与驱动

文章目录 前言一、信号采样二、信号驱动总结 前言 在UVM验证过程中,有monitor和driver组件,分别用于收集信号和驱动信号,本文记录两个例子,用于理解信号的采样以及驱动的过程。 一、信号采样 示例如图所示,在哪个时钟…

区块空间----流动性铭文

铭文正在改变加密世界,越来越多的人开始关注铭文,并参与进来!铭文赛道的未来是非常具有潜力和想象力的,甚至能够达到加密货币的普及水平。当然,这需要更多的基础设施更多的用例支持,但是一切都才刚刚开始。…

华为服务器RAID5

0、BIOS默认密码 TaiShan 100服务器BIOS系统的默认密码为 Huawei12#$ TaiShan 200服务器BIOS系统的默认密码为 Admin9000 1、服务器开机选择DEL,进行设置 2、选择设备管理器进入配置页面 3、选择AVAGO MegaRAID configuration utility 进入raid配置 4、选择 Main Menu 进入主…

Android P 背光机制流程分析

在android 9.0中,相比android 8.1而言,背光部分逻辑有较大的调整,这里就对android P背光机制进行完整的分析。 1.手动调节亮度 1.1.在SystemUI、Settings中手动调节 在界面(SystemUI)和Settings中拖动进度条调节亮度时,调节入口…

【Java面试】Mysql

目录 sql的执行顺序索引的优点和缺点怎么避免索引失效(也属于sql优化的一种)一条sql查询非常慢,我们怎么去排查和优化?存储引擎 MylSAM和InnoDB、Memory的区别事务的四大特性(ACID)脏读、不可重复读、幻读事务的隔离级别?怎么优化数据库SQL优…

【Tomcat与网络1】史前时代—没有Spring该如何写Web服务

在前面我们介绍了网络与Java相关的问题, 最近在调研的时候发现这块内容其实非常复杂,涉及的内容多而且零碎,想短时间梳理出整个体系是不太可能的,所以我们还是继续看Tomcat的问题,后面有网络的内容继续补充吧。 目录 …

【数据结构与算法】5.详解双向链表的基本操作(Java语言实现)

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢迎各位大佬指点&…

OceanMind海睿思入选《2023大数据产业年度创新技术突破奖》,并蝉联多项图谱

近日,由数据猿和上海大数据联盟主办,上海市经济和信息化委员会、上海市科学技术委员会指导的“第六届金猿季&魔方论坛——大数据产业发展论坛”在上海成功举行,吸引了数百位业界精英的参与。中新赛克海睿思作为国内数字化转型优秀厂商代表…

Java通过模板替换实现excel的传参填写

以模板为例子 将上面$转义的内容替换即可 package com.gxuwz.zjh.util;import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.*; import java.util.HashMap; import java.util.Map; import java.io.IOException; impor…

二极管漏电流对单片机ad采样偏差的影响

1,下图是常规的单片机采集电压电路,被测量电压经过电阻分压,给到mcu采集,反向二极管起到钳位作用,避免高压打坏mcu。 2,该电路存在的问题 二极管存在漏电流,会在100k电阻上产生叠加电压&#x…

内存管理(mmu)/内存分配原理/多级页表

1.为什么要做内存管理? 随着进程对内存需求的扩大,和同时调度的进程增加,内存是比较瓶颈的资源,如何更好的高效的利于存储资源是一个重要问题。 这个内存管理的需求也是慢慢发展而来,早期总线上的master是直接使用物…

【大数据】Flink 中的事件时间处理

Flink 中的事件时间处理 1.时间戳2.水位线3.水位线传播和事件时间4.时间戳分配和水位线生成 在之前的博客中,我们强调了时间语义对于流处理应用的重要性并解释了 处理时间 和 事件时间 的差异。虽然处理时间是基于处理机器的本地时间,相对容易理解&#…