当前位置:   article > 正文

Android系统禁止进入深休眠的方法_android 源码修改 阻止系统进入深度休眠

android 源码修改 阻止系统进入深度休眠

在PowerManagerService中
mWakeLockSuspendBlocker 是控制CPU休眠的锁。
mDisplaySuspendBlocker 是控制显示开关的锁。

通过查看文件,亮屏时看到的也是这两个锁:

# cat /sys/power/wake_lock                                          
PowerManagerService.Display PowerManagerService.WakeLocks

当按下电源键,会调用goToSleep—>goToSleepInternal —>goToSleepNoUpdateLocked—>updatePowerStateLocked;

当Activity用户无操作活动超时,会调用handleUserActivityTimeout—>updatePowerStateLocked—>;

最终走的都是updatePowerStateLocked

1. 如果想实现按 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");  
             }

2. 如果想实现关闭屏幕后系统不进入休眠,,则让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 (SystemProperties.getBoolean("sys.pms.holding_wake_lock", false)){
+            Slog.d(TAG, "Holding wake lock suspend blocker");
+            return;
+        }
+
         // Then release suspend blockers if needed.
         if (!needWakeLockSuspendBlocker && mHoldingWakeLockSuspendBlocker) {
             mWakeLockSuspendBlocker.release();

如果此文章解答了您的相关疑惑,节约了您的宝贵时间,可以赏小编鸡腿哟!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/301832?site
推荐阅读
相关标签
  

闽ICP备14008679号