HarmonyOS-中级(一)
文章目录
- 应用程序框架进阶
🏡作者主页:点击!
🤖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中对应的子集时,匹配成功
- 若只匹配一个应用则系统直接拉起应用,若匹配多个应用系统弹出多个应用供用户选择