梦应逍遥 发表于 2024-11-19 13:47:12

鸿蒙OpenHarmony【用户程序框架概述】子体系

概述

用户程序框架是OpenHarmony为开辟者提供开辟OpenHarmony应用的开辟框架,包罗两个子体系:Ability子体系和包管理子体系。
基本概念

开辟者在开辟前需要先了解以下基本概念,方便开辟者更好的明白OpenHarmony用户程序框架。
Ability子体系

Ability子体系是管理OpenHarmony应用运行状态的开辟框架。
图1 Ability子体系框架图
https://i-blog.csdnimg.cn/direct/03682e2985c141058622df9cdd3c0548.png


[*] Ability:体系调理应用的最小单元,是能够完成一个独立功能的组件,一个应用可以包罗一个或多个Ability。Ability分为两种范例:Page范例的Ability和Service范例的Ability。

[*]Page范例的Ability:带有界面,为用户提供人机交互的本领。
[*]Service范例的Ability:不带界面,为用户提供背景任务机制。

[*] AbilitySlice:单个页面及其控制逻辑的总和,是Page范例Ability特有的组件,一个Page范例的Ability可以包罗多个AbilitySlice,此时,这些页面提供的业务本领应当是高度相关的。
图2 Ability与AbilitySlice的关系图
https://i-blog.csdnimg.cn/direct/0983437da3a34b559c62ebca61b7daa2.png
[*] 生命周期:Ability被调理到启动、激活、隐藏和退出等各个状态的统称。
图3 Ability生命周期流转
https://i-blog.csdnimg.cn/direct/772f357fe72145fab7584959aca0cc44.png

[*] OnStart() 体系首次创建Page实例时触发该回调。对于一个Page实例,该回调在其生命周期过程中仅触发一次,Page在该逻辑后进入INACTIVE状态。开辟者必须重写该方法,并在此配置默认展示的AbilitySlice。
[*] OnActive() Page会在进入INACTIVE状态后来到前台,然后体系调用此回调。Page在此之后进入ACTIVE状态,该状态是应用与用户交互的状态。Page将保持在此状态,除非某类变乱发生导致Page失去焦点,比如用户点击返回键或导航到其他Page。
当此类变乱发生时,会触发Page回到INACTIVE状态,体系将调用OnInactive()回调。此后,Page可能重新回到ACTIVE状态,体系将再次调用OnActive()回调。因此,开辟者通常需要成对实现OnActive()和OnInactive(),并在OnActive()中获取在OnInactive()中被开释的资源。
[*] OnInactive() 当Page失去焦点时,体系将调用此回调,此后Page进入INACTIVE状态。开辟者可以在此回调中实现Page失去焦点时应体现的恰当行为。
[*] OnBackground() 如果Page不再对用户可见,体系将可能根据资源状态调用此回调,此后Page进入BACKGROUND状态。开辟者应该在此回调中开释Page不可见时无用的资源,或在此回调中执行较为耗时的状态保存操纵。
[*] OnForeground() 处于BACKGROUND状态的Page仍然驻留在内存中,当重新回到前台时(比如用户重新导航到此Page),体系将先调用OnForeground()回调使Page回到INACTIVE状态,然后调用OnActive()回调使Page回到ACTIVE状态。开辟者应当在此回调中重新申请在OnBackground()中开释的资源。轻量化装备目前不支持该接口。
[*] OnStop() 此回调表现体系正在销毁Page。销毁Page的可能缘故原由包罗:

[*]用户通过体系管理本领显式关闭Page,例如使用任务管理器关闭Page。
[*]用户行为触发Page的TerminateAbility()方法调用,例如使用应用的退出功能。
[*]配置变更导致体系暂时销毁Page并重修。
[*]体系出于资源管理目标,自动触发对处于BACKGROUND状态Page的销毁。


[*] AbilityKit:Ability框架提供给开辟者的开辟包,开辟者基于该开辟包可以开辟出基于Ability组件的应用。基于Ability组件开辟的应用有两种范例:基于JavaScript语言开辟的Ability(JS Ability)和基于C/C++语言开辟的Ability(Native Ability)。JS应用开辟框架是开辟者开辟JS Ability所用到框架,是在AbilityKit基础封装的包罗JS UI组件的一套方便开辟者能够迅速开辟Ability应用的框架。
[*] AbilityLoader:负责注册和加载开辟者Ability的模块。开辟者开辟的Ability先要调用AbilityLoader的注册接口注册到框架中,接着Ability启动时会被实例化。
[*] AbilityManager:负责AbilityKit和Ability管理服务进行IPC的通信。
[*] EventHandler:AbilityKit提供给开辟者的用于在Ability中实现线程间通信的一个模块。
[*] AbilityManagerService:元本领运行管理服务。该服务用于和谐各Ability运行关系、及生命周期进行调理的体系服务。此中,服务启动模块负责Ability管理服务的启动、注册等。服务接口管理模块负责Ability管理服务对外本领的管理。历程管理模块负责Ability应用所在历程的启动和销毁、及其历程信息维护等功能。Ability栈管理模块负责维护各个Ability之间跳转的先后关系。生命周期调理模块是Ability管理服务根据体系当前的操纵调理Ability进入相应的状态的模块。连接管理模块是Ability管理服务对Service范例Ability连接管理的模块。
[*] AppSpawn:负责创建Ability应用所在历程的体系服务,该服务有较高的权限,为Ability应用设置相应的权限,并预加载一些通用的模块,加快应用的启动。
包管理子体系

包管理子体系是OpenHarmony为开辟者提供的安装包管理框架。
图4 包管理子体系框架图
https://i-blog.csdnimg.cn/direct/40b6390fe7d94096b5d1b698e7bee8a8.png


[*]BundleKit:是包管理服务对外提供的接口,有安装/卸载接口、包信息查询接口、包状态变化listen接口。
[*]包扫描器:用来解析本地预制或者安装的安装包,提取里面的各种信息,供管理子模块进行管理,持久化。
[*]包安装子模块:安装,卸载,升级一个包。包安装服务是一个单独历程和包管理服务通过IPC进行通信,该服务用于创建、删除安装目次和数据目次等,具有较高的权限。
[*]包管理子模块:管理安装包相关的信息,存储持久化包信息。
[*]包安全管理子模块:署名检查、权限授予、权限管理。
运作机制

Ability子体系的核心模块是Ability管理服务、包管理子体系的核心模块是包管理服务,这两个服务是体系级服务,借助体系服务框架SAMgr实现服务的注册与发现,并对其他历程提供Ability管理服务和包管理服务。Ability管理服务和包管理服务通过AbilityKit和BundleKit以接口的形式向外提供服务。
图5 Ability管理服务和包管理服务启动
https://i-blog.csdnimg.cn/direct/c51a585149364cdd8c5187eb9a2b384e.png
Ability管理服务和包管理服务启动后,就可以安装OpenHarmony应用和启动运行OpenHarmony应用。
图6 应用启动流程
https://i-blog.csdnimg.cn/direct/a1153d2b97ec4d6c963d43a8e9b178de.png
桌面为Ability管理服务启动的第一个OpenHarmony应用。桌面启动后,用户可以在桌面上点击安装的OpenHarmony应用并启动该应用。上图6为从桌面启动一个已安装应用的交互流程。
从图中可知,Ability管理服务负责和谐Ability之间的表现隐藏,包管理服务负责Ability信息的存储查询。
约束与限定



[*] 语言版本

[*]C++11版本或以上

[*] 框架针对不同的芯片平台和底层OS本领,规格有所区别

[*] Cortex-M RAM/ROM:

[*]RAM:发起大于20K
[*]ROM: > 300K (包罗JS应用开辟框架,UIKit及引擎等强相关子体系)

[*] Cortex-A RAM/ROM:

[*]RAM:发起大于2M
[*]ROM:> 2M (包罗JS应用开辟框架,UIKit及引擎等强相关子体系)



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 鸿蒙OpenHarmony【用户程序框架概述】子体系