当前位置: 首页 > article >正文

开源鸿蒙system ability manager关键属性解析

本文主要记录分析源码foudation/systemabilitymgr/samgr/services/samgr/native/include/system_ability_manager.h文件中

class  SystemAbilityManager的各字段的作用做一个记录,以备将来查阅使用。

基本概念和术语

ability: 服务,业务,在开源鸿蒙中,将class Ability的子类编译成二进制共享库,运行时将其加载到进程中。一个进程可以加载若干个这样的二进制共享库。

system ability manager:系统业务(服务)管理。在开源鸿蒙中,在虚拟终端的每个成员设备中,存在一个管理组件,这个组件用来管理本成员设备上的所有业务的相关信息。最重要的是地址信息(如业务寄生在哪个进程中)。

local ability manager: 本地业务管理。在开源鸿蒙系统中,由于一个进程可以加载多个业务,所以,需要一个管理组件来管理本进程内的多个业务。

callback:  加载回调。当一个进程需要请求某业务时,如果业务当前不在线,则需要请求系统服务管理来加载对应的业务,请求时,将回调对象也发给系统服务管理进程,系统服务管理进程加载结束后,调用回调对象通知加载结果。

deviceName_

本设备的设备名称,由于开源鸿蒙支持分布式,支持虚拟终端(多设备虚拟成同一个终端)。 每个设备只有1个system ability manager,所以这个字段缓存了设备名称,方便后续查阅。

abilityDeath_

本字段内部包装了一个回调函数, 用来接收ability(下称业务)离线消息,即提供业务的进程退出的时候,需要在manager进程删除已退出进程对应的业务代理对象,并通知此业务的所有监听对象,业务已下线。

systemProcessDeath_

本字段内部包装了一个回调函数, 用来接收local ability manager离线消息,即业务进程的离线。

abilityStatusDeath_

本字段内部包装了一个回调函数, 用来接收listener(监听者)离线消息。监听者主要监听某业务的上线和离线。监听者所在的进程也可能离线。

abilityCallbackDeath_

本字段内部包装了一个回调函数, 用来接收callback(回调对象)离线消息。当请求manager加载某业务时,请求方提供一个回调对象,便于加载成功或失败后通知请求方。由于请求方进程在加载结束之前可能离线,所以callback对象也可能下线。

remoteCallbackDeath_

类似于abilityCallbackDeath_。 这里的callback对象稍微特殊,因为是请求加载远端设备(非本端设备, 虚拟终端场景)。这2种加载方式对应的回调对象不同。

dBinderService_

collectManager_

记录下按需加载或卸载服务所对应的配置信息。用于服务加载或卸载过程中去查询。当前已知系统升级服务在运行过程中会动态调整按需信息(原因不明)。

rpcCallbackImp_

主要用于跨设备(虚拟终端内的设备之间)。接收服务查询请求,接收服务加载请求,通知远端服务加载成功或失败。

abilityMap_

当前已加载服务的列表,服务ID与服务对象的映射表(这里的服务对象实际上是服务的代理对象)。

listenerMap_

监听对象映射表。每个被监听的服务一个表项,每个表项有若干个监听者,每个监听者有记录自己所在的进程号。

subscribeCountMap_

监听统计表,每个表项代表一个正在监听的进程,以及此进程有多少个监听者。

onDemandAbilityMap_

服务ID与服务所在的进程名的映射表。这个映射表是服务进程配置文件解析出来的,并不一定都加载了。主要用于按需加载服务时,可以将服务加载到指定的进程。

startingAbilityMap_

正在加载的服务映射表, 记录正在加载的服务ID与服务的其它信息。主要包含下列信息

服务的加载状态:未加载、正在加载、加载完成

按需加载事件

回调对象映射表:  加载请求对应的设备--->( 回调对象1, 进程号1),( 回调2,进程2), ....

systemProcessMap_

进程名称与其对应的local ability manager对象映射表

startingProcessMap_

正在启动的服务进程名称,以及其开始启动的时间的映射表

callbackCountMap_

加载请求方的回调对象计数,即请求进程ID, 请求进程对应的还未收到响应的数目。

startEnableOnceMap_

stopEnableOnceMap_

saProfileMap_

服务ID与其配置信息的映射表

remoteCallbacks_

将服务ID与设备ID组合在一起形成关键字,与请求方的回调函数进行映射,远端服务加载成功或失败后,调用回调函数

saFrequencyMap_

在单位时间内,用户访问服务的次数登记表


http://www.kler.cn/a/419979.html

相关文章:

  • Zustand的学习和应用
  • ARP表、MAC表、路由表的区别和各自作用
  • 微服务搭建----springboot接入Nacos2.x
  • VSCode如何关闭Vite项目本地自启动
  • [Redis#13] cpp-redis接口 | set | hash |zset
  • 渗透测试--Windows凭证收集
  • vue.js学习(day 18)
  • Vue 3 Hooks 教程
  • 【Gitlab】CICD使用minio作为分布式缓存
  • 数字图像处理(11):RGB转YUV
  • Flink四大基石之CheckPoint(检查点) 的使用详解
  • C++学习日记---第16天
  • Linux网络编程:IP地址字符串格式与in_addr格式的相互转换
  • ubuntu 20.04 安装 docker 后遇到的网络问题
  • 在python中连接elasticsearch
  • 算法训练(leetcode)二刷第三十三天 | *322. 零钱兑换、*279. 完全平方数、*139. 单词拆分
  • 计算机网络 —— HTTP 协议(详解)
  • Matlab实现海洋捕食者优化算法优化随机森林算法模型 (MPA-RF)(附源码)
  • 2024年09月中国电子学会青少年软件编程(Python)等级考试试卷(三级)答案 + 解析
  • 【C++】——红黑树的平衡之道:深入实现与优化
  • 乐橙云小程序插件接入HbuilderX
  • 68 mysql 的 临键锁
  • Unity开发FPS游戏之完结篇
  • RDIFramework.NET CS敏捷开发框架 SOA服务三种访问(直连、WCF、WebAPI)方式
  • Java程序员最新场景面试题总结
  • Brain.js(二):项目集成方式详解——npm、cdn、下载、源码构建