如何让程序在锁屏后还一直运行
来源:互联网 发布:java软件工程师前景 编辑:程序博客网 时间:2024/04/27 17:01
最近在开发一款定位APP,需求是在时刻进行定位,及时锁屏后也需要保持定时上传位置信息。但是,一般情况下手机锁屏后,Android系统为了省电以及减少CPU消耗,在一段时间后会使系统进入休眠状态,这时,android系统中CPU会保持在一个相对较低的功耗状态,但是上传位置信息需要网络请求来消耗CUP的。此前我试了各种方法,websocket、轮询、前台Service效果都不理想,自从使用了Android中的WakeLock机制,我腰不酸了,腿不疼了,上传数据都有劲了!话不多说,来一起看看如果实现WakeLock机制。
//获取电源锁,保持该服务在屏幕熄灭时仍然获取CPU时,保持运行 private void acquireWakeLock() { if (null == wakeLock) { PowerManager pm = (PowerManager)this.getSystemService(Context.POWER_SERVICE); wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK|PowerManager.ON_AFTER_RELEASE, "PostLocationService"); if (null != wakeLock) { wakeLock.acquire(); } } } //释放设备电源锁 private void releaseWakeLock() { if (null != wakeLock) { wakeLock.release(); wakeLock = null; } }
在程序第一次创建的时候调用acquireWakeLock方法,销毁的时候调用releaseWakeLock方法
**各种锁的类型对CPU 、屏幕、键盘的影响:
PARTIAL_WAKE_LOCK:保持CPU 运转,屏幕和键盘灯有可能是关闭的。
SCREEN_DIM_WAKE_LOCK:保持CPU 运转,允许保持屏幕显示但有可能是灰的,允许关闭键盘灯
SCREEN_BRIGHT_WAKE_LOCK:保持CPU 运转,允许保持屏幕高亮显示,允许关闭键盘灯
FULL_WAKE_LOCK:保持CPU 运转,保持屏幕高亮显示,键盘灯也保持亮度
ACQUIRE_CAUSES_WAKEUP:强制使屏幕亮起,这种锁主要针对一些必须通知用户的操作.
ON_AFTER_RELEASE:当锁被释放时,保持屏幕亮起一段时间**
还要在AndroidManifest中添加权限
<uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.DEVICE_POWER"/>
如果大家有更好的方法,欢迎留言交流~
阅读全文
0 0
- 如何让程序在锁屏后还一直运行
- Java如何让程序一直运行,不停止
- Linux中如何让进程到后台运行?Linux里面程序一直运行不被中断
- 怎么让 Android 程序一直后台运行
- 让iOS程序一直在后台运行
- Android如何保持程序一直运行 (让屏幕常亮且停在当前程序界面)
- 在程序在Unity中运行时,如何在 Unity不是当前窗口的时候,使程序一直在运行?
- 如何让程序在安装后自动运行
- 如何让程序以root权限运行在IOS上
- 调用系统声音, 震动, 让程序一直在后台运行
- linus 让一个程序在后台一直运行
- 如何让程序自动运行
- 如何让程序后台运行
- 如何让android的service一直在后台运行?
- 如何让android的service一直在后台运行
- 如何让android的service一直后台运行
- 让VS2008下控制台程序窗口一直在
- 让jar程序在linux上一直执行
- linux 的 free 内存命令详解
- 数据挖掘中SAS、python、R、spark、hadoop个人见解
- 乐观锁与悲观锁使用
- SQL Server数据库还原以及常见错误
- 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历
- 如何让程序在锁屏后还一直运行
- 知道这20个正则表达式,能让你少写1,000行代码
- 【stm32f0】 stm32f0中中断名和中断处理函数名所在位置
- K&R之初始化&宏调用
- Ubuntu下OpenCV2和OpenCV3共存的方法
- 1.Redis简介
- KMP算法及应用&(hdu2087剪花布条 )&Power Strings (POJ2046)&Cyclic Nacklace(HDU3746)
- python练习(十四)
- 数据类型