PowerManagerServcie

news2024/10/6 8:26:14

PowerManagerServcie(PMS)

  • 1. 电源管理架构
  • 2.电源管理4个层次
  • 3.电源管理服务 - PowerManagerService

1. 电源管理架构

PowerManagerService是android系统电源管理的核心服务。
PowerManagerService继承自SystemService,在SystemServer的main()方法中,调用了自身的run()方法,并在run()方法中启动三类服务:引导服务、核心服务和其他服务,引导服务中启动的是一些依赖性比较强的服务,其中就包括了PMS,通过Binder和其他组件进行交互等。

PowerManagerService在Framework层本质为策略控制方案,其作用为:

向上提供给应用程序接口,例如音频场景中保持系统唤醒、消息通知中唤醒手机屏幕场景;
向下决策HAL层以及Kernel层来控制设备待机状态,控制显示屏、背光灯、距离传感器、光线传感器等硬件设备的状态;

2.电源管理4个层次

在这里插入图片描述

  1. 应用接口层(PowerManager.java)
      PowerManager向应用提供了相应的接口,以供应用程序调用,应用可以调用PM的接口申请wakelock,唤醒系统,改变屏幕状态,屏幕亮度,或使系统进入睡眠等操作.PowerManager是PowerManagerService的代理类,PowerManager向上层应用提供交互的接口,具体的处理工作在PowerManagerService中完成。
    PowerManager相关接口:
    a、Wakeup():
      hide接口,不开放给应用。作用:强制系统从睡眠状态唤醒;应用想唤醒系统必须通过设置亮屏标志;
    b、gotoSleep():
      hide接口,不开放给应用。作用:强制系统进入睡眠状态
    c、userActivity():
      向PowerManagerService报告影响系统休眠的用户活动,重新计算灭屏时间,背光亮度,例如触屏、滑屏、power键等用户行为
    d、Wakelock:
      wakelock是PowerManager的一个内部类,提供了相关的接口来操作wakelock锁,比如newWakeLock()方法来创建wakelock锁,acquire()和release()方法来申请和释放锁;
    e、isDeviceIdleMode():
      返回设备当前的状态,如果处于Idle状态,则返回true,Idle状态是在手机长时间没有被使用以及没有运动的情况下,手机进入到一种Doze低功耗的模式,这种状态下手机可能会关掉网络数据访问,可以通过监视DEVICE_IDLE_MODE_CHANGED这个广播信息,来监控手机状态的改变

  2. Framework层(PowerManagerService.java)
    应用调用PowerManager开放的接口的实现方是PowerManagerService;
    PowerManagerService计算系统中和Power 相关的计算,是整个电源管理的决策系统。同时协调Power如何与系统其它模块的交互,比如亮屏,暗屏,系统睡眠,唤醒等等;

  3. HAL层(Power.c)
      该层只有一个power.c文件,该文件通过上层传下来的参数,向/sys/power/wake_lock 或者/sys/power/wake_unlock文件节点写数据来与kernel进行通信,主要功能是申请/释放锁,维持屏幕亮灭;

  4. 内核层(kernel/Power)
     内核层实现电源管理的方案主要包含三个部分:
      (1)Kernel/power/:实现了系统电源管理框架机制;
      (2)Arch/arm(ormips or powerpc)/mach-XXX/pm.c:实现对特定板的处理器电源管理;
      (3)drivers/power:是设备电源管理的基础框架,为驱动提供了电源管理接口。
    内核中Suspend功能有关的代码包括PM core、Device PM、Platform PM等几大块,具体分布如下:
    PM Core
    kernel/power/main.c----提供用户空间接口(/sys/power/state)
    kernel/power/suspend.c----Suspend功能的主逻辑
    kernel/power/suspend_test.c----Suspend功能的测试逻辑
    kernel/power/console.c----Suspend过程中对控制台的处理逻辑
    kernel/power/process.c----Suspend过程中对进程的处理逻辑
    Device PM
    drivers/base/power
    Platform dependent PM
    include/linux/suspend.h----定义platform dependent PM有关的操作函数集
    arch/xxx/mach-xxx/xxx.c 或者 arch/xxx/plat-xxx/xxx.c ----平台相关的电源管理操作

3.电源管理服务 - PowerManagerService

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

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

相关文章

Arbitrum Stylus 的工作原理

理解 Arbitrum 如何协调 EVM 和 WASM 的共存是至关重要的。这不仅仅是拥有两个独立的引擎;这是一种增强两者优势的协同关系。 Arbitrum 的独特架构允许 EVM 和 WASM 之间进行无缝和同步的操作,这要归功于其统一的状态、跨 VM 调用和兼容的经济模型。 用…

Go 快速开发朋友圈助力项目

1.根据业务完成不同功能数据表的设计和编写 注册功能 在models/user.go中定义结构体 验证用户名是否已存在 添加用户 package modelsimport ("gin-ranking/dao""time" )type User struct {Id int json:"id"Username string json:&…

面包屑对格林童话里的兄妹没有帮助,但对你的网站有

早上看产研周报的时候瞄到一眼「面包屑」三个字,因为是个面包脑袋,所以快速识别到了这几个字,在我的认知里,面包屑和 Bytebase 好像并不对付? 其实这里说的是面包屑导航啦,加上图是不是容易理解一点&#x…

Linux进阶-加深进程印象

进程 进程状态转换 一般来说,一个进程的开始都是从其父进程调用fork()函数开始,所以在系统一上电运行时,init进程就开始工作,在系统运行过程中,会不断启动新的进程(要么由init进程启动,要么由被…

Floyd-Warshall最短路径(C++,例题:pta大众情人)

Floyd-Warshall算法是一种用于求解所有点对之间最短路径的动态规划算法。它可以处理带权有向图或无向图,但是不能处理带负环的图。 算法步骤如下: 1. 初始化一个nn的矩阵D,其中D[i][j]表示从顶点i到顶点j的最短路径长度,如果i和…

文心一言 VS 讯飞星火 VS chatgpt (111)-- 算法导论10.2 2题

二、用go语言,用一个单链表 L实现一个栈。要求操作 PUSH和 POP 的运行时间仍为 O(1)。 文心一言: 在 Go 语言中,我们可以用结构体来实现一个单链表,然后再用栈的相关操作。 以下是一个可能的实现方式: package mai…

Spring Boot 中的 Redis 数据操作配置和使用

Spring Boot 中的 Redis 数据操作配置和使用 Redis(Remote Dictionary Server)是一种高性能的开源内存数据库,用于缓存、消息队列、会话管理和数据存储。在Spring Boot应用程序中,Redis被广泛用于各种用例,包括缓存、…

从0开始学Java:Java概述

文章目录 1. JavaSE体系介绍2. 计算机语言介绍3. Java语言概述3.1 Java生态圈3.2 Java语言发展历史3.3 Java技术体系平台3.4 Java的主要应用领域3.5 Java语言的特点 4. Java语言跨平台原理 1. JavaSE体系介绍 JavaSE知识模块介绍 第一部分:计算机编程语言核心结构&…

2023 年诺贝尔物理学奖-阿秒光谱学

如果您想了解和衡量周围的世界,您可以使用的最重要的工具之一就是能够准确地对正在发生的事情进行成像(或拍摄快照)。在 19 世纪,摄影意味着让拍摄对象保持完全静止,同时积累大量光线:相当于几秒钟的时间。…

一种用于肽图分析的烷化剂,Desthiobiotin-Iodoacetamide

中文名:脱硫生物素-碘乙酰胺 英文名:Desthiobiotin-Iodoacetamide 化学式:C14H25IN4O3 分子量:424.28 外观:固体/粉末 规格:10mg、25mg、50mg等(接受各种规格的定制服务,具体可…

JavaScript的懒加载处理

😘博主:小猫娃来啦 😘文章核心:JavaScript的懒加载处理 文章目录 什么是懒加载实现懒加载的方式js四步法设置占位图监听滚动事件加载图片触发加载函数 什么是懒加载 懒加载(Lazy Loading)是一种优化技术&a…

GitLab 502问题解决方案

由于最近 gitlab 切换到另一台服务器上部署的 gitlab 后,经常出现 502。平时重启 gitlab 后都能解决,今天突然重启多次后都还是 502(重启日志是正常的),遂通过 gitlab-ctl tail 查看日志进行排查。 gitlab-ctl tail通…

《进化优化》第3章 遗传算法

文章目录 3.1 遗传学的历史3.2 遗传学3.3 遗传学的历史3.4 一个简单的二进制遗传算法3.4.1 用于机器人设计的遗传算法3.4.2 选择与交叉3.4.3 变异3.4.5 遗传算法参数调试 3.5 简单的连续遗传算法 遗传算法模仿自然选择来解决优化问题。 为研究遗传算法,得遵守自然选…

微软10月补丁 | 修复103个漏洞,包括2个零日漏洞,13个严重漏洞

近日,微软发布了2023年10月的补丁更新,解决了其软件中的103个漏洞。 在这103个漏洞中,有13个的评级为严重漏洞,90个被评为重要漏洞。自9月12日以来,谷歌已经解决了基于chrome的Edge浏览器的18个安全漏洞。 这两个零日…

ATFX汇市:美国9月CPI数据来袭,机构预期年率增速将继续回落

ATFX汇市:今日20:30,美国劳工部将公布9月未季调CPI年率增速,前值为3.7%,预期值3.6%;9月未季调核心CPI年率,同一时间公布,前值为4.3%,预期值4.1%。无论是名义CPI增速还是核心CPI增速&…

深入理解强化学习——标准强化学习和深度强化学习

分类目录:《深入理解强化学习》总目录 强化学习的历史 早期的强化学习,我们称其为标准强化学习。最近业界把强化学习与深度学习结合起来,就形成了深度强化学习(Deep ReinforcemetLearning)。因此,深度强化…

基于YOLO算法的单目相机2D测量(工件尺寸和物体尺寸)三

1.简介 1.1 2D测量技术 基于单目相机的2D测量技术在许多领域中具有重要的背景和意义。 工业制造:在工业制造过程中,精确测量是确保产品质量和一致性的关键。基于单目相机的2D测量技术可以用于检测和测量零件尺寸、位置、形状等参数,进而实…

腾讯云国际站-阿里云OSS如何迁移到腾讯云COS?腾讯云cos迁移教程

下面小编将介绍当源对象存储部署在阿里云国际版OSS 时,如何配置全托管迁移任务和半托管迁移任务,实现顺利迁移数据至腾讯云国际版COS。 准备工作 阿里云对象存储 OSS 创建 RAM 子账号并授予相关权限: 登录 RAM 控制台。选择人员管理 > …

吃瓜神奇!企查查、天眼查、天眼销,到底哪家强?

最近,我发现很多人在讨论查企业信息的工具,什么企查查、天眼查、天眼销等,到底哪家强呢? 首先,我们来简单了解一下这些工具。企查查是一款可以帮助用户查询企业信息的工具,通过输入关键词,可以搜…

VPN基础

1.VPN简介 VPN即虚拟专用网,泛指通过VPN技术在公用网络上构建的虚拟专用网络。VPN用户在此虚拟网络中传输私网流量,在不改变网络现状的情况下实现安全、可靠的连接。 专用:VPN网络是专门供VPN用户使用的网络,对于VPN用户&#xf…