1.前言与WakeLock简介

1.1.前言

一些手机app(如微信、QQ等)有新消息来到达,手机屏幕即使在锁屏状态下也会亮起,并提示用户有新消息。但是,一般情况下手机锁屏后,Android系统为了省电以及减少CPU消耗,在一段时间后会使系统进入休眠状态,这时,Android系统中CPU会保持在一个相对较低的功耗状态,而收到新消息必定有网络请求,而网络请求是消耗CPU的操作,那么如何在锁屏状态乃至系统进入休眠后,仍然保持系统的网络状态以及通过程序唤醒手机呢?答案就是Android中的WakeLock机制。

1.2. Wakelock 锁机制

应用程序可以通过申请 wakelock 锁的机制来对系统是否待机作出投票,当有任何一个应用申请了 wakelock 锁,待机时没有释放掉,系统是不会进入待机的,直到所有应用的 wakelock 锁都释放掉了,才会进入待机。

2.WakeLock使用

2.1.添加使用权限

    <uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.DEVICE_POWER" />

2.2.获取与释放锁

    private PowerManager.WakeLock wakeLock = null;private static final String mWakeLockName = "BackupService";/*** 获取电源锁,保持该服务在屏幕熄灭时仍然获取CPU时,保持运行*/private synchronized void acquireWakeLock() {if (null == wakeLock) {PowerManager pm = (PowerManager) this.getSystemService(Context.POWER_SERVICE);wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK| PowerManager.ON_AFTER_RELEASE, mWakeLockName);if (null != wakeLock) {LogUtil.d(TAG, "acquireWakeLock!");wakeLock.acquire();}}}/*** 释放设备电源锁*/private synchronized void releaseWakeLock() {if (null != wakeLock) {LogUtil.d(TAG, "releaseWakeLock!");wakeLock.release();wakeLock = null;}}

2.3.WakeLock 类型以及说明:

  • PARTIAL_WAKE_LOCK:保持CPU 运转,屏幕和键盘灯有可能是关闭的。
  • SCREEN_DIM_WAKE_LOCK:保持CPU运转,允许保持屏幕显示但有可能是灰的,允许关闭键盘灯
  • SCREEN_BRIGHT_WAKE_LOCK:保持CPU运转,允许保持屏幕高亮显示,允许关闭键盘灯
  • FULL_WAKE_LOCK:保持CPU 运转,保持屏幕高亮显示,键盘灯也保持亮度
  • ACQUIRE_CAUSES_WAKEUP:强制使屏幕亮起,这种锁主要针对一些必须通知用户的操作.
  • ON_AFTER_RELEASE:当锁被释放时,保持屏幕亮起一段时间

2.4 WakeLock注意事项

WakeLock的设置是 Activiy 级别的,不是针对整个Application应用的。所以application下有多个activity一定需要注意下!

3.潜在问题

之前公司手机查功耗这块,也是我们框架组负责的,导致功耗问题的原因非常多,其中包括一些应用WakeLock不释放,导致功耗不通过。所以获取与释放一定要配对使用,不然要么GG了,再不然估计就要被强杀策略强杀了。

Android_WakeLock使用相关推荐

最新文章

  1. centOs7上用yum安装软件报错
  2. plotplayer声道设置原声
  3. 人人都要学一点深度学习(1)- 为什么我们需要它
  4. Vcenter 管理中心 在服务器上新建虚拟机及安装系统
  5. tp框架命名空间使用(namespace,use,as,\)
  6. 管理员所有权代码_为什么代码所有权糟透了,您永远不应该在有实践的地方工作...
  7. oracle新建用户sql局域,oracle 新建数据库,及创建用户,表空间,sqlplus导入导出数据库...
  8. 19个神经元控制自动驾驶汽车,MIT等虫脑启发新研究登Nature子刊
  9. JavaScript的输出(2)
  10. [转载] python 字符串查找的4个方法和count函数
  11. 视频教程-PHP开发进阶课程docker入门与进阶-PHP
  12. FPS游戏:方框透视算法分析
  13. ubuntu resolution
  14. 天下3各服务器最新互转查询,转服必看 大荒最新服务器火爆度排行榜
  15. python正则表达式提取字符串中的书名_使用python正则表达式从字符串中提取名称...
  16. zmq pub/sub使用详解
  17. Centos6 安装python3 pip3 ipython3
  18. MacTeX使用指南
  19. 经历多次重写,苹果平台最强科学计算器PCalc背后的故事
  20. 基于51单片机的温度湿度采集系统

热门文章

  1. UVA983 Localized Summing for Blurring【前缀和+最大子段和+DP】
  2. HDU2036 改革春风吹满地【多边形面积】
  3. Bailian2798 2进制转化为16进制【进制】
  4. B00006 函数itoa()
  5. linux 实用命令 —— cut、tr、sort、touch
  6. 强悍的 ubuntu —— ubuntu 与 windows 双系统的交互
  7. Tricks(三十四)—— 判断某一属性列是数值型还是标称型
  8. [面试]排列组合与概率计算(一)
  9. c语言怎么求一个数的所有因数,【代码】求一个数的因数和、求优化、顺便也供新人参考算法...
  10. 学python有前途吗-Python前景好不好?