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

打印 上一主题 下一主题

主题 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 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

梦应逍遥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表