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 避免此问题,但发现不同平台待机时间有差异且会影响待机时间,所以通过一个待机属性来判断最佳。
Android待机时收到screen on广播相关推荐
- Android 第十九课 大喇叭--广播机制----动态注册监听网络变化与静态注册实现开机启动
为了便于进行 系统级别的消息通知,Android引入了一套广播消息机制. 1.广播机制简介: 因为Android中的每个应用程序都可以对自己感兴趣的广播尽心注册,这样程序只会接收自己所关心的广播内容, ...
- android 学习随笔十六(广播 )
1.广播接收者 BroadcastReceiver 接收系统发出的广播 现实中的广播:电台为了传达一些消息,而发送的广播,通过广播携带要传达的消息,群众只要买一个收音机,就可以收到广播了 Andro ...
- Android四大组件系列7 Broadcast广播机制(上)
一 概述 广播 (Broadcast) 机制用于进程或线程间通信,广播分为广播发送和广播接收两个过程,其中广播接收者 BroadcastReceiver 是 Android 四大组件之一.Broadc ...
- Android四大组件Broadcast中注册广播registerReceiver流程源代码详解
在Android系统中,为什么需要广播机制呢?广播机制,本质上它就是一种组件间的通信方式,如果是两个组件位于不同的进程当中,那么可以用Binder机制来实现,如果两个组件是在同一个进程中,那么它们之间 ...
- 安卓Intent的Action中的常值变量:窗口action常量(android.intent.action.+xxx),广播action常量(android.intent.action.+xxx)
全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓Intent的Action中的常值变量:窗口action常量,广播action常量 窗口action名称常量,"android.inte ...
- 待机时反复按Power键概率性重启-定位问题
现象: 待机时反复按power键休眠会有概率性重启,概率 >= 50%,但连接USB线情况下不会出现,所有怀疑是系统进入休眠才发生了异常,取出mtklog看到有db产生,确实发生了KE(kern ...
- Android 屏幕唤醒 + 屏幕解锁 + 开机广播android.intent.action.BOOT_COMPLETED
Android 屏幕唤醒 + 屏幕解锁 + 开机广播android.intent.action.BOOT_COMPLETED 1.内容说明 Android手机开机后,会发送android.intent ...
- Android调试时常用的adb命令
Android调试时常用的adb命令 1.adb shell am am是Activity Manager的缩写,使用此命令可以从控制台启动Activity.Service,打开或关闭进程,发送广播等 ...
- Android运行时权限 1
Android 运行时权限 一.Android 权限发展史 二.Android6.0 权限简介 1.Normal Permissions (普通权限) 2.Dangerous Permissions ...
最新文章
- Idea中类实现Serializable接口 引入 serialVersionUID
- ajax请求挂起_Ajax请求内部循环挂起浏览器?
- Nginx安装及配置简介
- 您需要了解的WordPress漏洞以及如何修复它们
- springboot 入门二- 读取配置信息一
- ChEMBL数据库的官方python工具包
- 程序员专属段子集锦 5/10
- 任正非:HR面试不深刻导致大规模进人、走人,耽误人家几年对得起人家吗?...
- kettle中Pan kitchen用法及bat写法
- 做个简单的Java学生考勤系统06--签到功能完善
- 网络的攻防,简单两步像黑客一样实现命令行对话,不需要社交软件也可以聊天,基础知识(一)
- STM32 ADC 过采样技术
- 暑期作息时间表模板_2015中学生暑假作息时间表模板
- Android Q 上的Biometric生物识别之Fingerprint指纹识别流程
- html5 图片合成,H5案例分享:图片合成
- 怎么测试网站服务器速度,怎么测试网站速度
- 详解ZStack Cloud v4.0:自研VPC网络模型实践指南
- 视频号直播间微信小程序开发制作介绍
- python制作海报_生成海报(前端 | python)
- Semantic Mapping in ROS学习及代码运行