当前位置: 首页 > article >正文

HarmonyOS-中级(一)

文章目录

    • 应用程序框架进阶

https://i-blog.csdnimg.cn/blog_migrate/58966ddd9b29aabe8841f5ec34f0d31c.gif

🏡作者主页:点击!

🤖HarmonyOS专栏:点击!

⏰️创作时间:2024年11月29日12点10分

在这里插入图片描述

应用程序框架进阶

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

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

UIAbility进阶

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

ExtensionAbility组件:基于特定场景,提供的应用组件,每一个具体场景对应一个 ExtensionAbilityType,开发者只能使用系统已定义的类型。各类型的ExtensionAbility组件均由相应的系统服务统一管理
ExtensionAbility组件用于输入法场景的 InputMethodExtensionAbility
ExtensionAbility组件用于闲时任务的WorkSchedulerExtensionAbility

一个App,可以包含一个或多个HAP

AbilityStage与编译器的HAP是一一对应的关系

UIAbility实例创建后,系统为该实例创建一个 WindowStage 实例并一对一绑定
WindowStage 提供了应用进程类窗口管理器的作用

UIAbility组件的核心是生命周期

应用组件与窗口生命周期分离

  • 业务逻辑和UI逻辑分离
  • 便于系统对应用组件进行裁剪
  • 在多设备(桌面设备和移动设备)上,应用组件可使用同一套生命周期

AbilityStage最主要的能力是初始化模块,以及对指定实例模式启动的 UIAbility 组件进行匹配处理

  • onCreate(生命周期回调函数,实例创建完成之后触发的回调函数)----模块初始化操作
  • onAcceptWant(指定实例模式启动UIAbility组件时触发的回调函数)
  • onConfigureationUpdated(系统全局配置发生变化时触发的函数)
  • onMemoryLevel(系统调整内存时触发的函数)(应用切换后台时,系统会将后台应用保存到缓存中,当系统资源不足时,会通过多种方式从应用中回收内存,必要时会完全停止应用,释放内存用于执行关键任务,为避免系统停止用户的应用进程,可在onMemoryLevel函数中订阅系统内存的变化情况,释放不必要资源)

UIAbility组件启动模式

  • 单实例启动模式
  • 默认启动模式
  • 系统运行时,同一 UIAbility 组件只存在唯一实例
  • 多实例启动模式
    • 系统每次启动UIAbility组件,都会创建一个新的该类型UIAbility实例
  • 指定实例启动模式
    • 支持拉起指定 Key 值的 UIAbility 实例
    • 系统每次拉拉起指定的 Key 值的UIAbility实例,若key值不存在,则创建一个新的实例

更改单实例启动模式在该UIAbility组件所在模块的module.json5 配置文件中,找到 UIAbility 配置信息将其 launchType字段进行更改 singleton 即可

want是对象间信息传递的载体,用于在应用组件之间传递信息,场景之一是作为 startAbility 的参数进行传递

want启动UIAbility组件有两种形式:显示 want 启动和隐式 want 启动

显示want启动:在启动 UIAbility 组件时,在want参数中指定了 UIAbility 组件名 abilityName 和 bundleName 用于启动某个明确 UIAbility 组件的场景

隐式want启动:启动UIAbility组件时,want参数中不指定 UIAbility 组件名AbilityName,而是设置被启动应用具有的能力和类型等筛选条件

显式want启动UIAbility组件开发

  • 在被拉起的FunAbility中,可以通过获取传递过来的want参数的parameters来获取调用方UIAbility的PID,BundleName等信息
  • 被调用 UIAbility 冷启动时,通过onCreate函数接收want,热启动时通过onNewwant函数接受want

隐式want启动UIAbility组见开发

  • 调用方wan中设置的action和entities为被调用方module.json5文件中skills中对应的子集时,匹配成功
  • 若只匹配一个应用则系统直接拉起应用,若匹配多个应用系统弹出多个应用供用户选择

http://www.kler.cn/a/416662.html

相关文章:

  • 使用nginx请求转发时前端报跨域问题解决
  • 工作中Linux 内核的链表算法的使用
  • LLAVA论文简记
  • 【算法day3】链表:增删改查及其应用
  • fiddler安卓雷电模拟器配置踩坑篇
  • FRU文件
  • 嵌入式QT学习第4天:Qt 信号与槽
  • 无人机数据处理系统:原理与核心系统
  • 12 设计模式之工厂方法模式
  • 华为OD机试真题-数组组成的最小数-2024年OD统一考试(E卷)
  • 管家婆工贸ERP BR042.存货自定义项虚拟库存状况表
  • mysql--二进制安装编译安装yum安装
  • vue3项目搭建-6-axios 基础配置
  • SmartSQL:一款方便、快捷的数据库文档查询、导出工具
  • Vue.js 组件开发进阶:构建可扩展的组件库
  • MySQL授权外部设备访问本地数据库
  • 设计模式 外观模式 门面模式
  • A02、数据库性能调优
  • SpringBoot源码-SpringBoot内嵌Tomcat原理
  • 科研小白成长记41——享受大起大落
  • 【真正离线安装】Adobe Flash Player 32.0.0.156 插件离线安装包下载(无需联网安装)
  • c++学习——list容器的使用学习
  • 【C++】LeetCode:LCR 077. 排序链表
  • YOLO系列论文综述(从YOLOv1到YOLOv11)【第13篇:YOLOv10——实时端到端物体检测】
  • Vue.js 实现用户注册功能
  • Python 小高考篇(8)拓展