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();

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

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值