Handler在锁屏状态下进入睡眠状态
来源:互联网 发布:软件破解安卓 编辑:程序博客网 时间:2024/04/29 14:17
我在服务里发了一个请求,在handler中更新ListVIew中的界面会失败,hanldeMessage不会走,但是在静态handler中可以更新UI。
如何在锁屏状态乃至系统进入休眠后,仍然保持系统的网络状态以及通过程序唤醒手机呢?答案就是Android中的WakeLock机制。
官方对于WakeLock的解释:
PowerManager:This class gives you control of the power state of the device.
PowerManager.WakeLock: lets you say that you need to have the device on.
PowerManager负责对Android设备电源相关进行管理,而系统通过各种锁对电源进行控制,WakeLock是一种锁机制,只要有人拿着这把锁,系统就无法进入休眠阶段。既然要保持应用程序一直在后台运行,那自然要获得这把锁才可以保证程序始终在后台运行。
WakeLock 使用代码:
WakeLock wakeLock = null;
//获取电源锁,保持该服务在屏幕熄灭时仍然获取CPU时,保持运行,当TimerTask开始运行时加入如下方法
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;
}
}
上面第一个方法是获取锁,第二个方法是释放锁,一旦获取锁后,及时屏幕在熄灭或锁屏长时间后,系统后台一直可以保持获取到锁的应用程序运行。获取到PowerManager的实例pm后,再通过newWakeLock方法获取wakelock的实例,其中第一个参数是指定要获取哪种类型的锁,不同的锁对系统CPU、屏幕和键盘有不同的影响,第二个参数是自定义名称。
各种锁的类型对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:当锁被释放时,保持屏幕亮起一段时间
最后声明权限:
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DEVICE_POWER"/>
- Handler在锁屏状态下进入睡眠状态
- S3C2440在睡眠状态下GPIO应该的配置状态
- 设置应用运行状态时禁止屏幕进入睡眠状态
- ubuntu系统下,hp 650 G2笔记本合上盖子后不进入睡眠状态的问题
- 一段防止PPC进入睡眠状态的VS源代码
- Windows 7电脑进入睡眠状态下载的方法
- 关掉"离开模式“,解决无法计算机无法进入睡眠状态
- 解决win7无法进入睡眠状态的问题
- 进入相册选取图片和拍照方法 和解决在横屏状态下的调试
- Linux睡眠休眠状态
- 电脑睡眠状态
- 让Win7电脑睡眠状态下继续下载
- Windows Vista/7 下取消睡眠状态
- DataFu在Apache进入孵化状态
- [转载精品] win7无法进入睡眠状态问题解决办法的各种汇总(收集)
- Android后台的linux一直保持唤醒状态,不进入睡眠
- Android在锁屏状态下启动界面
- 菜鸟新篇之记忆:在vc下进入调试状态看到源代码及汇编
- Java中static 和final的区别
- 【 STL之二分查找 (Binary search in STL)】
- Samba的安装与配置
- 用UDP进行广播后绑定发送Json数据进行通讯
- STL中map
- Handler在锁屏状态下进入睡眠状态
- css3动画--小熊快跑
- 实施外部SAP项目的几点心得
- Selenium打开谷歌浏览器提示chromedriver.exe停止运行且浏览器显示请停用以开发者模式运行的扩展chengx
- 可滚动textView 和点击事件冲突
- 599. Minimum Index Sum of Two Lists
- P、NP、NP-Complete、NP-Hard
- gradle ... project refresh failed
- Hadoop学习(二)