• WakeLock原理和手机耗电:

手机功耗本质是硬件工作的消耗,手机主要功耗硬件如下:CPU GPU  soc Vedio 和外设。内存本身是不耗电的,只是作为程序的临时住所;
          Wake Lock 是Android提供给开发者的一个方法,主要的作用是对关键进程进行强制性的运行,正常情况下手机灭屏了就不使用了,硬件应该也就停止工作了,单总有例外,如音乐、短信接收等;所以Android系统提供Wake Lock机制,提供了Wake Lock的API,使得应用程序有权限通过代码阻止AP进入休眠状态,这种开放性导致流氓软件 ,即使手机灭屏,程序仍然会在后台运行占用资源,对功耗和手机性能产生影响。

PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); WakeLock sCpuWakeLock = pm.newWakeLock( PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP,"okTag"); if (sCpuWakeLock!= null) {          sCpuWakeLock.release(); sCpuWakeLock = null;
}

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:WakeLock 被释放后,维持屏幕亮度一小段时间,减少WakeLock 循环时的闪烁情况
如果申请了partial wakelock,那么即使按Power键,系统也不会进Sleep,如Music播放时 如果申请了其它的wakelocks,按Power键,系统还是会进Sleep

但如果不领会Android设计者的意图而滥用Wake Lock API,为了自身程序在后台的正常工作而长时间阻止AP进入休眠状态,就会成为待机电池杀手。

  • APP专项测试和手机耗电测试

应用滥用WakeLock和Alarm机制,会造成灭屏待机过程中手机经常被唤醒,无法进入深度睡眠耗电严重,尤其是BAT系的全家桶应用,在Android手机系统耗电测试和APP专项测试中,检测灭屏待机耗电是一项重要工作;

在Android手机测试中,主要是log中读取相关信息,以MTK平台为例,抓取MTKLOG,wakelock相关的log存储在sys_log中,如下图:

APP专项测试可以将平台log导出来,并编写脚本扫描文件,统计一段时间内APP的wakelock的次数和持续时间。

Android的WakeLock机制相关推荐

  1. 关于电源锁:android之WakeLock机制浅析

    http://blog.sina.com.cn/s/blog_4ad7c2540101n2k2.html 项目中数据传输时因为手机休眠而罢工了,这里简单了解了一下电源锁. android之WakeLo ...

  2. Android wakelock机制

    Android wakelock机制 Wake Lock是一种锁的机制, 只要有人拿着这个锁,系统就无法进入休眠,可以被用户态程序和内核获得. 这个锁可以是有超时的或者是没有超时的,超时的锁会在时间过 ...

  3. Android 8.1 PowerManagerService分析(三)——WakeLock机制

    欢迎大家关注我的掘金帐号 我会在那里定期更新最新版本的Android Framework源码模块分析~~ 在Android 8.1 PowerManagerService分析(一)中,主要分析了PMS ...

  4. Android睡眠唤醒机制--Kernel态

    Android睡眠唤醒机制--Kernel态 转载 2014年08月26日 14:31:41 标签: android / hibernate 193 一.简介 Android系统中定义了几种低功耗状态 ...

  5. Android睡眠唤醒机制--系统架构

    一.简介 Android在Linux内核原有的睡眠唤醒模块上基础上,主要增加了下面三个机制: • Wake Lock 唤醒锁机制:      • Early Suspend 预挂起机制:      • ...

  6. Android锁屏机制原理分析

    转载自:http://www.2cto.com/kf/201401/273898.html 春节前最后几天了,工作上几乎没有什么要做.大致整理下之前工作中写的文档,PPT,手册. 由于去年一年完全转到 ...

  7. android全局轮询机制,Android轮询机制

    在消息的获取上是选择轮询还是推送得根据实际的业务需要来技术选型,例如对消息实时性比较高的需求,比如微博新通知或新闻等那就最好是用推送了.但如果只是一般的消息检测比如更新检查,可能是半个小时或一个小时一 ...

  8. Android Binder IPC机制

    之前有很多人问过我TaintDroid的内容,所以一点点吧涉及的思路整理一下. 今天又看了一遍,确实需要很多的技术支持以及扎实的功底,不管是Java的还是Android,从系统底层一直到顶层,涉及的知 ...

  9. 通过源码分析Android 的消息处理机制

    2019独角兽企业重金招聘Python工程师标准>>> #通过源码分析Android 的消息处理机制 我们知道,Android应用是通过消息来驱动的,每一个进程被fork之后,都会在 ...

最新文章

  1. pandas的自带数据集_盘点 | Python自带的那些数据集
  2. Xshell连接Centos完整版(动态ip)
  3. 航空企业如何用「AI利器」提升乘客体验
  4. leetcode 108. Convert Sorted Array to Binary Search Tree | 108. 将有序数组转换为二叉搜索树(Java)
  5. 人口预测和阻尼-增长模型_使用分类模型预测利率-第1部分
  6. 基于matlab的ldpc编码的构造,基于LDPC编码的GMSK调制与解调及matlab仿真实现(含录像)...
  7. mac linux 蓝牙键盘,还在纠结Mac版键盘?试试KeyRemap4MacBook吧!
  8. java高效获取大文件的行数
  9. oracle关闭数据库容器,Oracle12cr1新特性之容器数据库(CDB)和可插拔数据库(PDB) 的启动和关闭...
  10. Nginx之升级和构建后添加新的模块
  11. Spring容器创建流程——总结
  12. MySQL 中视图和表的区别以及联系是什么?
  13. MySQL数据库23道安全保障
  14. 详解EMC测试国家标准GB/T 17626
  15. 【久远讲算法】栈——后进先出的数据结构
  16. 真正高质量的免费高速高防空间!
  17. 深圳实验室装修准备工作
  18. 选择题汇总4(括号里填的答案都是对的,不用管下面那个答案正确与错误,因为作者懒得删了)
  19. R read.table Error:appears to contain embedded nulls
  20. java大马后门_PHP大马后门分析

热门文章

  1. 【MLP实战】001:基于Minist数据集的手写数字识别
  2. 使用python解决验证码登录并爬取登录后的个人界面:本篇以古诗文网站为例
  3. 函数可导与连续性的关系
  4. OrchardCore
  5. python爬虫——爬取周杰伦歌词
  6. JWT|概述|JWT结构|JWT在java中的使用|JWT工具类的封装|JWT在springboot中的使用|JWT与拦截器的配合
  7. 百度云远程连接自己的云服务器,
  8. Golang 编辑器
  9. Swin Transformer论文解读
  10. Android Studio模拟器安装失败问题解决方法