Stage模型
介绍
本示例基于AbilityKit展示了Satge模型Ability管理的相关能力。
效果预览
使用说明:
1.点击AbilityContext按钮,跳转到AbilityContext页面,测试UIAbilityContext相关内容;
2.点击AbilityAccessCtrl按钮,跳转到AbilityAccessCtrl页面,测试abilityAccessCtrl相关内容;
3.点击Window按钮,跳转到Window页面,测试窗口相关内容;
工程目录
├──entry/src/main/ets/
│ ├─Application
│ │ └──MyAbilityStage.ts
│ ├─feature
│ │ ├──AbilityAccessCtrlController.ts
│ │ ├──AbilityContextController.ts
│ │ └──WindowController.ts
│ ├─JumpAbility
│ │ └──JumpAbility.ts
│ ├─MainAbility
│ │ └──MainAbility.ts
│ ├─pages
│ │ ├──component
│ │ │ ├──IndexTitleBar.ets // 单个页面标题组件
│ │ │ └──PublicTitleBar.ets // 通用的标题组件
│ │ ├──AbilityAccessCtrlPage.ets // 程序访问控制
│ │ ├──AbilityContextPage.ets // 提供允许访问特定于ability的资源的能力
│ │ ├──Index.ets
│ │ ├──TestPage.ets
│ │ └──WindowPage.ets // 窗口
│ └──util
│ └──Logger.ts
└──entry/src/main/resources
具体实现
Stage模型的设计基于如下三个出发点:
-
应用的能力与系统总体功能和功耗的平衡
在系统运行过程中,前台应用的资源占用会被优先保障,与此同时由于应用能力不同而产生的功耗,也需要符合系统整体功耗的要求。Stage模型通过Ability与UI分离、严格的后台管控、基于场景的服务机制及单进程模型来达成这种应用能力与整体系统功耗的平衡。
-
原生支持组件级的迁移和协同
HarmonyOS是原生支持分布式的操作系统,应用框架需要从架构设计上使得组件更易于实现迁移和协同。Stage模型通过Ability与UI分离及UI展示与服务能力合一等模型特性,实现这一设计目标。
-
支持多设备和多窗口形态的特点
为了支持多种设备形态和更易于实现多种不同的窗口形态,需要组件管理服务和窗口管理服务在架构层面上是解耦的,从而方便裁剪,更有利于定制不同的窗口形态。Stage模型通过重新定义了Ability生命周期定义和设计组件管理服务和窗口管理服务的单向依赖解决这一问题。
本示例主要展示Stage模型与FA模型的区别,分别从AbilityContext、Window、abilityAccessCtrl等模块进行介绍。
AbilityContext:AbilityContext是Ability的上下文环境,继承自Context。AbilityContext模块提供允许访问特定于ability的资源的能力,包括对Ability的启动、停止的设置、获取caller通信接口、拉起弹窗请求用户授权等。在使用AbilityContext的功能前,需要通过Ability子类实例获取。
Window:窗口提供管理窗口的一些基础能力,包括对当前窗口的创建、销毁、各属性设置,以及对各窗口间的管理调度。
abilityAccessCtrl:程序访问控制提供程序的权限管理能力。
以上就是本篇文章所带来的鸿蒙开发中一小部分技术讲解;想要学习完整的鸿蒙全栈技术。可以在结尾找我可全部拿到!
下面是鸿蒙的完整学习路线,展示如下:
除此之外,根据这个学习鸿蒙全栈学习路线,也附带一整套完整的学习【文档+视频】,内容包含如下:
内容包含了:(ArkTS、ArkUI、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、鸿蒙南向开发、鸿蒙项目实战)等技术知识点。帮助大家在学习鸿蒙路上快速成长!
鸿蒙【北向应用开发+南向系统层开发】文档
鸿蒙【基础+实战项目】视频
鸿蒙面经
为了避免大家在学习过程中产生更多的时间成本,对比我把以上内容全部放在了↓↓↓想要的可以自拿喔!谢谢大家观看!