鸿蒙OS投票机制

(基于openharmony5.0)

投票机制

param get | grep ohos.boot.time
投票机制参数图
在这里插入图片描述

只有当所有的投票完成,开机动画才会退出,整理需要投票的系统应用(三方应用不参与投票)如下图所示:

在这里插入图片描述

以进程foundation为例:
foundation\systemabilitymgr\safwk\etc\profile\foundation.cfg

"bootevents": ["bootevent.wms.fullscreen.ready","bootevent.appfwk.ready","bootevent.lockscreen.ready","bootevent.wms.ready"
],

可以看到foundation进程有4个投票事件,会在相应的时机,代码中调用SystemWriteParam()方法进行投票。如果有需要投票的地方没有投,会导致开机动画不会退出,开机动画退出会检测bootevent.boot.completed事件。
base\startup\init\services\modules\bootevent\bootevent.c

#define BOOT_EVENT_BOOT_COMPLETED "bootevent.boot.completed"...static int BootEventParaFireByName(const char *paramName)
{BOOT_EVENT_PARAM_ITEM *found = NULL;char *bootEventValue = strrchr(paramName, '.');INIT_CHECK(bootEventValue != NULL, return 0);bootEventValue[0] = '\0';WriteBooteventSysParam(paramName);found = (BOOT_EVENT_PARAM_ITEM *)OH_ListFind(&bootEventList, (void *)paramName, BootEventParaListCompareProc);if (found == NULL) {return 0;}// Already firedif (found->timestamp[BOOTEVENT_READY].tv_sec > 0) {return 0;}INIT_CHECK_RETURN_VALUE(clock_gettime(CLOCK_MONOTONIC,&(found->timestamp[BOOTEVENT_READY])) == 0, 0);g_bootEventNum--;SetServiceBooteventHookMgr(NULL, paramName, 2); // 2: bootevent service has ready// Check if all boot event params are firedif (g_bootEventNum > 0) {return 0;}// All parameters are fired, set boot completed now ...INIT_LOGI("All boot events are fired, boot complete now ...");//所有投票事件都已经完成SystemWriteParam(BOOT_EVENT_BOOT_COMPLETED, "true");SaveServiceBootEvent();// report complete eventReportSysEvent();BootCompleteClearAll();
#ifndef STARTUP_INIT_TESTHookMgrExecute(GetBootStageHookMgr(), INIT_BOOT_COMPLETE, NULL, NULL);
#endifRemoveCmdExecutor("bootevent", -1);return 1;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/56349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PRT一键转STL/OBJ,在线预览更直观

随着3D打印技术的普及和设计软件的多样化,不同3D模型格式之间的转换需求也日益增长。PRT作为一种常见的三维设计文件格式,在工程设计领域应用广泛。然而,PRT格式并不被所有3D软件和3D打印机所支持。 为什么选择我们的PRT转换器? …

快速理解http的get和post

在网络通信中,HTTP 协议扮演着非常重要的角色,而不同的 HTTP 方法决定了客户端与服务器之间的交互方式。 这里讲一下最常用的两种方法——GET 和 POST。 一、GET 方法 GET 方法用于从服务器获取资源。 这就像去图书馆借书——你向图书馆请求一本特定的…

光路科技TSN交换机和电力专用交换机即将亮相第31届中国国际电力设备及技术展览会

在全球能源领域正经历深刻转型之际,可再生能源技术的飞跃进步正为电力行业的未来开辟新径。太阳能、风能等绿色能源,凭借其无可比拟的优势,正稳步取代化石燃料,成为电力行业的主流趋势。多国政府积极响应,出台多项政策…

Vue3获取ref元素的几种方式

静态绑定 获取单个 dom 元素 v-for 中使用 需要注意的是,访问的时候,要确保 ref 引用值已经成功绑定上元素,我们可以使用以下几种方式确保获取

倒计时 2 天,GOSIM CHINA 2024 全日程重磅发布(附参会指南)!

伴随着全球开源技术的快速发展,开源已成为驱动技术创新与协作的重要力量。作为开源领域的年度盛会,GOSIM 大会承载这一背景下的使命,已连续两年聚焦全球前沿技术的突破与应用,推动开源技术在更多场景中的创新实践——今年&#xf…

3D数学在unity中的使用(工作小结)

前言: 公司的游戏,想实现一个类似于元气骑士前传的技能面板,这里的技能可以实现旋转替换。 记录一下我遇到的问题及解决办法。 如何生成这些图标 1:手动摆放。 优点:实现起来简单,代码量少。 缺点&…

关于onMounted和onUpdated的触发

一、在项目中,使用父组件页面子组件(el-Dialog)弹窗的结构 如果在子组件dialog中使用onMounted,那么这个onMounted在父组件加载的时候就会触发(尽管这个时候弹窗没打开) 解决方法:对子组件使用…

Docker 搭建mysql 连接超时问题,xxl-job启动mysql连接报错

1.本地连接Navicat报错信息,猜测是navicat默认连接超时导致的,后面换成idea一个插件虽然慢但连接上了 2013 - Lost connection to MySQL server at reading initial communication packet 2.启动xxl-job会报错,网上有人mysql驱动与数据库不匹…

Docker 命令替代(ctr和 crictl)

1. ctr ctr 是 containerd 的一个客户端工具。 $ ctr -v ctr containerd.io 1.6.16从输出看到,这是一个 containerd 管理工具,一般是安装完 containerd.io 之后就有的命令。 现在 Containerd 也有 namespaces 的概念,所以很多操作需要加上 -n。默认情况下运行在 default …

python 桌面程序开发

作为python新手,通过编写代码,与java、nodejs相比较,差别还有的。 环境配置: IDE:Visual Studio Code PyInstaller: 5.13.2 Python: 3.7.0 Platform: Windows-10-10.0.22621-SP0 功能描述:编写带UI界面的桌面程序,读取终端设备历史轨迹数据,采用多线程高并发,模拟终…

每日学学Java开发规范,集合处理(附阿里巴巴Java开发手册(终极版))

前言 每次去不同的公司,码不同的代码,适应不同的规范,经常被老大教育规范问题,我都有点走火入魔的感觉,还是要去看看阿里巴巴Java开发规范,从中熟悉一下,纠正自己,码出高效&#xf…

arthas常用命令(五)--heapdump 、jvm

heapdump heapdump , 类似 jmap 命令的 heap dump 功能。 dump 到指定文件。 arthas-output 是arthas 生成到项目中的文件。 dump.hprof 是自定义的 dump 文件名称。 [arthas26028]$ heapdump arthas-output/dump.hprof Dumping heap to arthas-output/dump.hprof ... Heap…

redis在项目中运用(基础)

mysql学完命令之后&#xff0c;学过jdbc。 redis也要使用Java连接redis数据库 1.Jedis 2.RedisTemplate[重点] 1、Jedis【了解】 jedis是redis的java版本的客户端实现&#xff0c;jedis中提供了针对redis命令的操作 1.1导入jar文件 Maven方式 <dependency><group…

SoC芯片中Clock Gen和Reset Gen的时钟树综合

社区目前已经开设了下面列举的前四大数字后端实战课程&#xff0c;均为直播课&#xff0c;且均是小编本人亲自授课&#xff01;遇到项目问题&#xff0c;都可以远程一对一指导解决具体问题。小编本人是一线12年后端经验的数字后端工程师。想找一线IC后端技术专家亲自带你做后端…

【C语言】动态内存管理(下)

本篇博客将讲解以下知识&#xff1a; 1、calloc和realloc 2、常见的动态内存错误 1、calloc和realloc &#xff08;1&#xff09;calloc C语言中还提供了一个函数叫calloc&#xff0c;calloc也用来动态内存分配 calloc函数原型&#xff1a; void* calloc(size_t num, …

Flask如何实现前后端分离项目

在现代Web开发中&#xff0c;前后端分离是一种常见的架构模式&#xff0c;其中前端和后端分别独立开发和部署&#xff0c;通过API进行通信。Flask作为后端框架&#xff0c;可以很容易地与前端框架&#xff08;如React、Vue.js或Angular&#xff09;配合使用来实现前后端分离。以…

配置 @ 路径别名,优化小程序访问路径

配置 路径别名&#xff0c;优化小程序访问路径 在开发大型小程序时&#xff0c;我们通常会采用分包策略来优化加载速度和用户体验。然而&#xff0c;这种分包方式往往会导致访问小程序根目录下文件的路径变得冗长而复杂。为了简化这些路径&#xff0c;我们可以借鉴 Vue 中的做…

标准库、STL、编译参数、正则表达式

标准库 标准库减少了不同程序员对编程语言语法语义的疑惑。 不同语言的标准库 C语言有标准库libc, 最新的Windows系统已更新为ucrt, 可在PC/移动设备共享crt. 相比C语言&#xff0c;C除了有标准C运行时库&#xff0c;增加了STL. STL 写了太多的不同参数类型的加法函数&#xff…

Python 入门(二、什么是 Python 的虚拟环境)

Python 入门第二课 &#xff0c;Python 的虚拟环境...... by 矜辰所致前言 本来以为环境搭建好了&#xff0c;就直接开始敲代码了&#xff0c;但是一直看到一个专业词汇&#xff1a;虚拟环境。 对于习惯了嵌入式 C 语言开发博主来说&#xff0c;一开始确实有点不明白&#xf…

centos celery 日志管理

celery经常会产生大量日志&#xff0c;长时间累计下来会对服务器造成一定的压力 1 配置 logrotate 进行日志拆分 logrotate 是 Linux 系统中常用的日志管理工具。我们将使用它来管理 Celery 的日志文件&#xff0c;确保日志文件不会无限增长&#xff0c;并定期拆分、归档和删…