在PowerManagerService中,mWakeLockSuspendBlocker是控制CPU休眠的锁;
,mDisplaySuspendBlocker是控制显示开关的锁。
通过查看文件,亮屏时看到的也是这两个锁:
# cat /sys/power/wake_lock
PowerManagerService.Display PowerManagerService.WakeLocks
当按下电源键,会调用goToSleep—>goToSleepInternal —>goToSleepNoUpdateLocked—>updatePowerStateLocked;
当Activity用户无操作活动超时,会调用handleUserActivityTimeout—>updatePowerStateLocked—>;
最终走的都是updatePowerStateLocked
如果想实现按power键不关闭屏幕,则不让mDisplaySuspendBlocker进行release操作即可。
frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
@Override // Binder call
public void goToSleep(long eventTime, int reason, int flags) {
+ if(true){
+ return;
+ }
if (eventTime > SystemClock.uptimeMillis()) {
throw new IllegalArgumentException("event time must not be in the future");
}
如果想实现关闭屏幕后系统不进入休眠,,则让mDisplaySuspendBlocker进行release操作,mWakeLockSuspendBlocker不进行release操作。
frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
/**
* Updates the suspend blocker that keeps the CPU alive.
*
* This function must have no other side-effects.
*/
private void updateSuspendBlockerLocked() {
+ if (Boolean("sys.pms.holding_wake_lock", false)){
+ Slog.d(TAG, "Holding wake lock suspend blocker");
+ return;
+ }
+
// Then release suspend blockers if needed.
if (!needWakeLockSuspendBlocker && mHoldingWakeLockSuspendBlocker) {
lease();
本文发布于:2024-02-02 20:55:33,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170687854246391.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |