计步器锁屏后依然工作的原理
Android关闭屏幕的同时禁止硬件进入休眠
Screen Off之后,CPU和各种外设(包括WIFI,蓝牙,加速度传感器等等)都停止工作。
WakeLock能够禁止Android硬件进入休眠。进程可以创建各种类型的WakeLock,只要系统中还存在WakeLock,那么系统就不会休眠。
以下是创建并使能Wake Lock的一般性代码:
PowerManager powerManager=(PowerManager)getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock=powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,TAG);
wakeLock.acquire();
释放Wake Lock的代码为:
wakeLock.release();
而创建Wake Lock的代码:
WakeLock wakeLock=powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,TAG);
中,PARTIAL_WAKE_LOCK可以替换成其他的参数,以决定Wake Lock的类型。
值 | 意义 |
PARTIAL_WAKE_LOCK | 保持CPU运转,屏幕和键盘灯有可能是关闭的。 |
SCREEN_DIM_WAKE_LOCK | 保持CPU运转,允许保持屏幕显示但有可能是灰的,允许关闭键盘灯。 |
SCREEN_BRIGHT_WAKE_LOCK | 保持CPU运转,保持屏幕高亮显示,允许关闭键盘灯。 |
FULL_WAKE_LOCK | 保持CPU运转,保持屏幕高亮显示,键盘灯也保持亮度。 |
ACQUIRE_CAUSES_WAKEUP | 不会唤醒设备,强制屏幕马上高亮显示,键盘灯开启。有一个例外,如果有notification弹出的话,会唤醒设备。 |
ON_AFTER_RELEASE | Wake Lock被释放后,维持屏幕亮度一小段时间,减少Wake Lock循环时的闪烁情况。 |
如果申请了PARTIAL_WAKE_LOCK,那么即使按Power键,系统也不会进Sleep,如Music播放时。如果申请了其它的WakeLock,
按Power键,系统还是会进Sleep。但如果不领会Android设计者的意图而滥用Wake Lock API,为了自身程序在后台的正常工作而
长时间阻止AP进入休眠状态,就会成为待机电池杀手。
当然,要在AndroidManifest.xml中加权限:
<uses-permission android:name="android.permission.WAKE_LOCK"/>
在某些手机上,当屏幕关闭时,手机虽然还是在通过UDP发送数据,但是数据固定不变了,这说明传感器已经停
止更新数据。原因:由于Android的开放性,任何手机生产商都可以对系统裁剪、自定义。尤其是Android的驱动
程序,谷歌只定义了头文件,规定必须实现的函数,而具体实现完全有厂商决定。有些手机被设计成这样:当电
源键被按下时,驱动程序关闭传感器电源。因此,即使加了WAKELOCK也没用。毕竟,谷歌规定WAKELOCK只是“保
持CPU”运转,并没有规定WakeLock需要保持传感器等外设运转。
一种对部分手机有效的办法,即注册一个Intent.ACTION_SCREEN_OFF消息的事件监听器,并在
Intent.ACTION_SCREEN_OFF监听器中重新注册传感器事件监听器。于是,当屏幕关闭时,程序就会再次注册传感
器事件监听器。
流程:
(1)当屏幕关闭之时,安卓停掉所有传感器的电源;
(2)然后执行Intent.ACTION_SCREEN_OFF的回调函数;
(3)在回调函数中,重新注册传感器监听器。而传感器监听器的注册导致传感器电源又重新开启。
所以综上,正确的做法是注册一个锁屏的广播接收者,当锁屏事件发生时,wakeup cpu and register sensorListener
计步器锁屏后依然工作的原理相关推荐
- win10锁屏后默认1分钟进入睡眠状态的解决办法
问题描述 先说一下睡眠和关闭显示器的区别:睡眠时系统中的一部分程序会停止工作,当你唤醒时会有卡顿感.而关闭显示器的话,其实程序还是在工作的,仅仅是不显示了.从仅关闭显示器的状态唤醒时,体验会比较流畅. ...
- Android 基于高德地图的锁屏后定位和轨迹自动纠偏(离线版)
目录 一.后台如何持续获取定位 1.后台以及锁屏后持续定位异常的原因以及应对方案探索 2.后台持续获取定位失败的应对方案 二.对坐标点进行加工处理 (1).为什么要加工处理 (2).如何加工处理 本文 ...
- 手机为什么手机里的计算机没在桌面,为什么安卓手机锁屏后动态桌面就不见了?教你设置软件后台运行!...
Hi,大家好,我是小雨.小雨给大家分享过许多动态壁纸和手机宠物的软件,比如3D桌面.微信/QQ来电特效.微信透明背景等.但是一些小伙伴反应会出现这样的一个问题:设置好了都能使用,但是锁屏后再打开手机时 ...
- iOS 解决苹果手机锁屏后APP退出的问题及app状态
进入后台程序退出是由iOS系统管理决定的,但APP退出在后台后,只有10秒的持续运行时间,然后暂停.但该APP还在内存中,当出现内存警告,也就是别的APP要运行,而此时内存又不足的情况下,系统会回收停 ...
- kali锁屏后无法唤醒_联想电脑锁屏后无法唤醒_win10联想休眠怎么唤醒黑屏图文步骤...
2020-02-15 12:59:37 大家在使用电脑时为了保护电脑的安全,我们一般会设置密码.那么之后我们开机或者唤醒睡眠的时候,往往会先弹出一个锁屏界面.但有的网友却觉得这样很是麻烦,想要关闭锁屏 ...
- 使用AlarmManager实现定时提醒,解决锁屏后无法正常唤醒CPU和屏幕的问题
之前写过一个demo来实现定时操作,最近帮别人写项目的时候又用到了这个需求,于是coding起来. 首先来说一下我的实现思路:用户选择好闹钟提醒时间后我要启动一个Service,在这个Service里 ...
- (已解决)win10+ubuntu18.04双系统,ubuntu锁屏后无法唤醒,重启黑屏闪烁无法进入命令行模式
事发经过: 台式机双系统 win10 + Ubuntu16.04,大部分时间在Ubuntu16.04下工作.一个不小心(dist-upgrade)升级到了ubuntu18.04后,在一次锁屏后发现再也 ...
- 2020-08-23 W7电脑锁屏后,能让电脑处于运行状态吗?
W7电脑锁屏后,能让电脑处于运行状态吗? https://zhidao.baidu.com/question/509418733.html 如何设置电脑锁屏后自动黑屏,但永不休眠,不睡眠也不会断网. ...
- android app应用后台休眠,安卓手机锁屏后程序自动关闭,怎么设置手机app允许锁屏后台运行...
原标题:安卓手机锁屏后程序自动关闭,怎么设置手机app允许锁屏后台运行 安卓手机锁屏后,很多程序就会自动关闭,实际上,这是安卓手机的一种保护机制.为了使系统能够流畅稳定的运行以及更加省电,它都会在手机 ...
最新文章
- System Poles and Zeros 系统零点和极点
- 基于MTCNN的人脸自动对齐技术原理及其Tensorflow实现测试
- 转:典型开源3D引擎分类比较
- Py之wordcloud:python中非常有趣的词云图wordcloud简介、安装、使用方法、案例应用详细攻略
- visual stdio里面怎么取消空格补全?
- c++类指针赋值表达式必须是可修改的左值_C++进阶教程系列:全面理解C++中的类...
- kafka 同步提交 异步_详解Kafka设计架构核心——Kafka副本机制详解
- java case 语句_Java switch case 语句
- wpsppt放映时间_利用WPS演示制作PPT计时器的两种方法
- python中断言方法举例说明_Python中断言Assertion的一些改进方案
- PostgreSQL 视图
- µC/OS-II Release Notes
- 为何日本手机走不出国门?
- 送你一招超级快速网站,系统搬家教程,上百G内容的网站快速搬家---快速服务器搬家记录-不同IDC服务商的大文件服务器搬家支招-一颗优雅草科技伊凡
- 什么样的程序员才是牛逼的程序员?
- Unity实现 场景切换 音乐不断
- 实用项目管理之制定项目章程
- OSPF高级特性 —— 管理距离(优先级)修改 + 外部路由的metric值的修改
- Android多媒体框架(3)—— libstagefright中MediaCodec源码分析
- 一款非常牛逼的Java爬虫框架(高度灵活可配置)