鸿蒙HarmonyOS应用开发—AbilityStage组件容器

AbilityStage是一个Module级别的组件容器,应用的HAP在首次加载时会创建一个AbilityStage实例,可以对该Module进行初始化等操作。

AbilityStage与Module一一对应,即一个Module拥有一个AbilityStage。

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

  1. 在工程Module对应的ets目录下,右键选择“New > Directory”,新建一个目录并命名为myabilitystage。

  2. 在myabilitystage目录,右键选择“New > TypeScript File”,新建一个TypeScript文件并命名为MyAbilityStage.ts。

  3. 打开MyAbilityStage.ts文件,导入AbilityStage的依赖包,自定义类继承AbilityStage并加上需要的生命周期回调,示例中增加了一个onCreate()生命周期回调。

   import AbilityStage from '@ohos.app.ability.AbilityStage';import Want from '@ohos.app.ability.Want';export default class MyAbilityStage extends AbilityStage {onCreate() {// 应用的HAP在首次加载的时,为该Module初始化操作}onAcceptWant(want: Want) {// 仅specified模式下触发return "MyAbilityStage";}}
  1. 在 module.json5配置文件 中,通过配置 srcEntry 参数来指定模块对应的代码路径,以作为HAP加载的入口。 json { "module": { "name": "entry", "type": "entry", "srcEntry": "./ets/myabilitystage/MyAbilityStage.ts", ... } }

AbilityStage拥有onCreate()生命周期回调和onAcceptWant()onConfigurationUpdated()onMemoryLevel()事件回调。

  • onCreate()生命周期回调:在开始加载对应Module的第一个UIAbility实例之前会先创建AbilityStage,并在AbilityStage创建完成之后执行其onCreate()生命周期回调。AbilityStage模块提供在Module加载的时候,通知开发者,可以在此进行该Module的初始化(如资源预加载,线程创建等)能力。

  • onAcceptWant()事件回调:UIAbility 指定实例模式(specified) 启动时候触发的事件回调,具体使用请参见UIAbility启动模式综述。

  • onConfigurationUpdated()事件回调:当系统全局配置发生变更时触发的事件,系统语言、深浅色等,配置项目前均定义在 Configuration类中。

  • onMemoryLevel()事件回调:当系统调整内存时触发的事件。

应用被切换到后台时,系统会将在后台的应用保留在缓存中。即使应用处于缓存中,也会影响系统整体性能。当系统资源不足时,系统会通过多种方式从应用中回收内存,必要时会完全停止应用,从而释放内存用于执行关键任务。为了进一步保持系统内存的平衡,避免系统停止用户的应用进程,可以在AbilityStage中的onMemoryLevel()生命周期回调中订阅系统内存的变化情况,释放不必要的资源。

  import AbilityStage from '@ohos.app.ability.AbilityStage';import AbilityConstant from '@ohos.app.ability.AbilityConstant';export default class MyAbilityStage extends AbilityStage {onMemoryLevel(level: AbilityConstant.MemoryLevel) {// 根据系统可用内存的变化情况,释放不必要的内存}}

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

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

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

相关文章

ArcGIS二次开发(一)——搭建开发环境以及第一个简单的ArcGIS Engine 程序

Arcgis10.2、Arcgis Engine10.2与Microsoft Visual Studio 2012的版本进行安装 1、推荐教程与安装包2、安装顺序3、安装成功测试VS新建项目可以创建ArcGIS项目,并且在VS中拖拽ArcGIS工具 4、搭建第一个简单的ArcGIS Engine 程序 ArcEngine和VS版本是有对应的&#x…

东方 - 分支(1)

目录 解析部分:双分支1303. 冷饮的价格(1)问题描述解题思路代码实现代码解析 1033. 判断奇偶数问题描述解题思路代码实现代码解析 1302. 是否适合晨练?问题描述解题思路代码实现代码解析 1632. 需要几辆车问题描述解题思路代码实现…

Leetcode 453. 最小操作次数使数组元素相等

原题链接:Leetcode 453. minimum moves to equal array elements Given an integer array nums of size n, return the minimum number of moves required to make all array elements equal. In one move, you can increment n - 1 elements of the array by 1. …

【Python】enumerate函数的使用方法,小白一看就懂

enumerate函数的使用方法: season[‘a’,‘b’,‘c’,‘d’] for i in enumerate(season): print(i) season[‘a’,‘b’,‘c’,‘d’] for i,eliment in enumerate(season): print(i,eliment) 输出结果为: 练习题: 2.给出10个学生姓名…

5. C++ 局部静态变量在什么时候分配内存和初始化?

C局部静态变量在什么时候分配内存和初始化? 对于C语言的全局和静态变量,不管是否被初始化,其内存空间都是全局的;如果初始化,那么初始化发生在任何代码执行之前,属于编译期初始化。由于内置变量无须资源释…

从0到1:校园生活圈小程序开发笔记(一)

可行性研究 校园生活圈小程序是一种面向大学或学院校园的社交平台,旨在为校园内的师生提供交流、分享、互助和信息发布等功能。 为校园内的师生提供一个便捷的平台,帮助他们更好地了解校园生活、参与校园活动、交流学习和共享资源。 功能分解 公告资讯…

力扣HOT100 - 42. 接雨水

解题思路&#xff1a; 动态规划 感觉不是很好想 class Solution {public int trap(int[] height) {int n height.length;if (n 0) return 0;int[] leftMax new int[n];leftMax[0] height[0];for (int i 1; i < n; i) {leftMax[i] Math.max(leftMax[i - 1], height[i…

JS加密解密之应用如何保存到桌面书签

前言 事情起因是这样的&#xff0c;有个客户解密了一个js&#xff0c;然后又看不懂里边的一些逻辑&#xff0c;想知道它是如何自动拉起谷歌浏览器和如何保存应用到书签的&#xff0c;以及如何下载应用的。继而诞生了这篇文章&#xff0c;讲解一下他的基本原理。 渐进式Web应用…

docker使用教程

寒假用了docker 2个月没用 结果还重新安装docker 忘了怎么用 为了免得以后忘写下下面内容 # If you dont have a docker installed, youll need to install docker curl -s https://get.docker.com/ | sh # Use pip to install docker-compose pip install docker-compose…

【力扣hot100】207 课程表(c++、python)解析

相关题目&#xff1a; 210 课程表2 【力扣hot100】207 课程表&#xff08;c、python&#xff09;解析 1.官方题解&#xff1a;1.1深搜c版本python版本 1.2广搜c版本 1.官方题解&#xff1a; 这是一题经典的「拓扑排序」问题 给定一个包含 n 个节点的有向图 G&#xff0c;我们…

网络七层模型:理解网络通信的架构(〇)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

idea-创建java8的springboot项目

现在使用IDEA创建 Spring Boot 项目&#xff0c;jdk 版本最低要求为 17。Spring Boot 官方在全力维护 3.x 版本&#xff0c;而 Spring Boot 3.x 对 jdk 版本的最低要求为17。 如果需要继续使用 jdk8&#xff0c;则需要修改 Server URL &#xff0c;改成&#xff1a;https://st…

解决 vue activited 无效问题

当对页面APP.vue组件router-view标签使用了keep-alive之后在组件activated状态时不会发送请求&#xff0c;这时需要使用 keep-alive标签的 exclude属性排除需要重新发送请求的组件。需要注意exclude的值要和组件本身的name值要一致&#xff0c;如果不一致就会不生效。目前我出现…

Linux服务器安装部署Harbor

Linux服务器安装部署Harbor详细说明文档&#xff1a;https://gitee.com/WilliamWangmy/snail-knowledge/blob/master/Docker/%E5%AE%89%E8%A3%85Harbor.md ps&#xff1a;如果觉得作者写的还行&#xff0c;能够满足您的需求&#xff0c;请给作者的开源项目start。如果觉得文章存…

软件工程---软件设计模式和软件体系结构

软件设计模式 软件设计模式是针对解决特定问题的通用解决方案的指导性原则和规范。设计模式通常关注如何在代码级别解决问题&#xff0c;提供了一种在软件设计中反复使用的经验性方法。设计模式通过将问题和解决方案进行抽象&#xff0c;帮助开发人员更好地理解和应用面向对象…

C++运算符重载中的引用返回

文章目录 引言原因1.为了支持链式调用2.避免不必要的对象创建和复制3.保持语义一致性 引言 在C编程语言中&#xff0c;运算符重载是一项强大的特性&#xff0c;它允许程序员为自定义类型重新定义或重载已有的运算符&#xff0c;从而使得这些类型能够像内置类型一样使用运算符。…

离线linux服务器安装mysql8

本文的服务器环境&#xff1a;openEuler毛坯版的&#xff0c;很多常用的指令都没有预装&#xff0c;比如rpm、tar等等&#xff0c;没有网络坏境&#xff0c;需要自己手动配置本地yum仓库&#xff0c;安装相关指令 1、检查服务器是否已经安装了MySQL 1.1、查询mysql以安装的相关…

14、Spring CLI,命令行的start.spring.io

Initializr 你可以使用 Spring CLI 作为 github.com/spring-io/initializr 的客户端,默认情况下使用 start.spring.io。Shell 风格的项目创建模拟了从 UI 创建项目的方式。 新建命令(New Command) 要使用 new 命令,在命令行上定义选项。然后,如果 Initializr 需要更多信…

C语言编程练习题:第一期

练习题1&#xff1a; 编写一个程序&#xff0c;计算并输出两个整数之和。 #include <stdio.h>int main() {int num1, num2;printf("Enter two integers: ");scanf("%d %d", &num1, &num2);int sum num1 num2;printf("The sum of %d…

QT学习之UDP

#include <QUdpSocket>// UDP 接受的数据char buf[1024] { 0 };// 接受到数据的标识bool bRecvFlag false;//Udp服务器QUdpSocket* mSocket;//通信的ip和端口&#xff0c;用于获取发送者的 IP 和端口QHostAddress sendAddr; // 本机QHostAddress recAddr; // 设备ipqu…