Android待机时收到screen on广播

Android在待机时会执行到framework//base/services/core/java/com/android/server/power/Notifier.java里的sendGoToSleepBroadcast,在此次会对电源状态进行判断,若待机较慢,耗时较长,则系统会发出sendWakeUpBroadcast,此广播里有screen on广播。

修改如下:

改之前:

709          if (powerState == INTERACTIVE_STATE_AWAKE) {
710  		sendWakeUpBroadcast();            
711         } else {
712            sendGoToSleepBroadcast();
713         }

改之后:

709          if (powerState == INTERACTIVE_STATE_AWAKE) {
710  
711  	        Slog.d(TAG, "===powerState is INTERACTIVE_STATE_AWAKE.");
712  
713  	        if (0 != SystemProperties.getInt("sys.str.suspending", 0))
714  	        {
715  			Slog.d(TAG, "===is suspending so sendGoToSleepBroadcast.");
716  			sendGoToSleepBroadcast();
717  	        }
718  		else
719  	        {
720  			sendWakeUpBroadcast();
721  	        }
722  	      /*
723  	        mHandler.postDelayed(new Runnable() {
724  		        @Override
725  		        public void run() {
726  		        sendWakeUpBroadcast();
727  		        }
728  	        }, 1000);
729                     */
730          } else {
731              sendGoToSleepBroadcast();
732          }

测试验证OK,问题解决。原本想通过delay 避免此问题,但发现不同平台待机时间有差异且会影响待机时间,所以通过一个待机属性来判断最佳。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值