一、Android Power介绍
Android系统的电源管理框架分成五个部分:应用层,框架层,Native层,HAL层和内核层。电源管理架构图例如下:
应用接口层: PowerManager.java 负责向应用程序提供一系列接口,例如wakelock的申请与释放,进而让系统休眠或唤醒
框架层: PowerManagerService.java PowerManagerServic是android电源管理的核心服务,向上提供应用程序接口.向下通过hal层和kernel层来控制待机状态和系统硬件设备状态
HAL层: power.c 接收上层参数,通过写节点与kernel层通信
内核层: Kernel/Power 实现系统电源管理框架机制,为设备电源管理提供基础框架
二、PowerManagerService
PowerManagerService相关类
PowerManager
This class lets you query and request control of aspects of the device's power state.
此类允许你查询和请求对设备电源状态的各个方面的控制。
PowerManager文件路径:
frameworks/base/core/java/android/os/PowerManager.java
PowerManager定义:
public final class PowerManager {}
PowerManagerInternal
Power manager local system service interface.
电源管理器本地系统服务接口。
PowerManagerInternal文件路径:
frameworks/base/core/java/android/os/PowerManagerInternal.java
PowerManagerInternal定义:
public abstract class PowerManagerInternal {}
PowerManagerService
The power manager service is responsible for coordinating power management functions on the device.
电源管理器服务负责协调设备上的电源管理功能。
PowerManagerService文件路径:
frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
PowerManagerService定义:
public final class PowerManagerService extends SystemService
implements Watchdog.Monitor {}
PowerGroup
Used to store power related requests to every display in a {@link com.android.server.display.DisplayGroup}.
用于将每个显示器的电源相关请求存储在 {@link com.android.server.display.DisplayGroup} 中。
PowerGroup文件路径:
frameworks/base/services/core/java/com/android/server/power/PowerGroup.java
PowerGroup定义:
public class PowerGroup {}
ShutdownThread
ShutdownThread文件路径:
frameworks/base/services/core/java/com/android/server/power/ShutdownThread.java
ShutdownThread定义:
public final class ShutdownThread extends Thread {}
SystemProperties
Android SystemProperties是一个用于访问和修改Android系统属性的工具类。系统属性是一些键值对,用于存储和传递系统相关的配置信息。通过SystemProperties类,开发者可以获取和设置这些系统属性。
SystemProperties类提供了以下几个常用的方法:
-
get(String key):获取指定键对应的系统属性值。
-
get(String key, String defaultValue):获取指定键对应的系统属性值,如果不存在则返回默认值。
-
getInt(String key, int defaultValue):获取指定键对应的整型系统属性值,如果不存在则返回默认值。
-
getLong(String key, long defaultValue):获取指定键对应的长整型系统属性值,如果不存在则返回默认值。
-
set(String key, String value):设置指定键对应的系统属性值。
使用SystemProperties类可以方便地获取和修改Android系统的一些配置信息,比如设备型号、版本号、网络状态等。开发者可以根据具体需求使用这些方法来操作系统属性。
SystemProperties文件路径:
frameworks/base/core/java/android/os/SystemProperties.java
SystemProperties定义:
public class SystemProperties {}
三、PowerManagerService相关流程介绍
PowerManager wakeup流程分析
Android13 PowerManager wakeup流程分析-CSDN博客
PowerManager shutdown流程分析
Android13 PowerManager shutdown流程分析-CSDN博客