论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
移动端开发
›
鸿蒙
›
鸿蒙OpenHarmony【用户程序框架概述】子体系 ...
鸿蒙OpenHarmony【用户程序框架概述】子体系
梦应逍遥
金牌会员
|
2024-11-19 13:47:12
|
显示全部楼层
|
阅读模式
楼主
主题
530
|
帖子
530
|
积分
1590
概述
用户程序框架是OpenHarmony为开辟者提供开辟OpenHarmony应用的开辟框架,包罗两个子体系:Ability子体系和包管理子体系。
基本概念
开辟者在开辟前需要先了解以下基本概念,方便开辟者更好的明白OpenHarmony用户程序框架。
Ability子体系
Ability子体系是管理OpenHarmony应用运行状态的开辟框架。
图1
Ability子体系框架图
Ability
:体系调理应用的最小单元,是能够完成一个独立功能的组件,一个应用可以包罗一个或多个Ability。Ability分为两种范例:Page范例的Ability和Service范例的Ability。
Page范例的Ability
:带有界面,为用户提供人机交互的本领。
Service范例的Ability
:不带界面,为用户提供背景任务机制。
AbilitySlice
:单个页面及其控制逻辑的总和,是Page范例Ability特有的组件,一个Page范例的Ability可以包罗多个AbilitySlice,此时,这些页面提供的业务本领应当是高度相关的。
图2
Ability与AbilitySlice的关系图
生命周期
:Ability被调理到启动、激活、隐藏和退出等各个状态的统称。
图3
Ability生命周期流转
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
包管理子体系框架图
BundleKit
:是包管理服务对外提供的接口,有安装/卸载接口、包信息查询接口、包状态变化listen接口。
包扫描器
:用来解析本地预制或者安装的安装包,提取里面的各种信息,供管理子模块进行管理,持久化。
包安装子模块
:安装,卸载,升级一个包。包安装服务是一个单独历程和包管理服务通过IPC进行通信,该服务用于创建、删除安装目次和数据目次等,具有较高的权限。
包管理子模块
:管理安装包相关的信息,存储持久化包信息。
包安全管理子模块
:署名检查、权限授予、权限管理。
运作机制
Ability子体系的核心模块是Ability管理服务、包管理子体系的核心模块是包管理服务,这两个服务是体系级服务,借助体系服务框架SAMgr实现服务的注册与发现,并对其他历程提供Ability管理服务和包管理服务。Ability管理服务和包管理服务通过AbilityKit和BundleKit以接口的形式向外提供服务。
图5
Ability管理服务和包管理服务启动
Ability管理服务和包管理服务启动后,就可以安装OpenHarmony应用和启动运行OpenHarmony应用。
图6
应用启动流程
桌面为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企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
梦应逍遥
金牌会员
这个人很懒什么都没写!
楼主热帖
HarmonyOS应用开辟高级认证考试答案三- ...
云计算稽核 - 分析电子银行需求采用微 ...
如何将github copilot当gpt4用
从零手写实现 nginx-25-directive map ...
Percona Toolkit 神器全攻略(复制类) ...
华为云数据库首席专家谈分布式数据应用 ...
防患于未然,智能监控新视角:EasyCVR ...
Flutter/Dart第02天:Dart基础语法(建 ...
《深入理解Java虚拟机》读书笔记:Clas ...
C#深拷贝方法
标签云
挺好的
服务器
快速回复
返回顶部
返回列表