• 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. MySQL Antelope和Barracuda的区别分析
  2. Android View关系图
  3. 主数据管理(MDM)的七个最佳实践
  4. 科学计算机怎么算坐标,用科学计算器fx-5800算坐标怎么按
  5. 我身上的银屑病(尝试自我治疗中)
  6. localStorage与sessionStorage的区别
  7. 把Hybris Commerce本地tomcat的keystore给本机的tomcat使用
  8. Linux基本服务命令
  9. 在Vue文件中引用模块的相对路径“@“符号表示什么意思?
  10. 第16章 Tomcat配置
  11. 【每日新闻】百度云王龙:数据库与AI的融合主要分三个阶段 | 中国移动研究院:5G第一个版本出炉...
  12. DNA甲基化测序方法介绍
  13. 什么是内部类?内部类的作用
  14. SQL Server 配置管理器中Browser灰色无法启动解决办法
  15. C++中标准库 输出 puts()函数
  16. 英特尔会是下一个诺基亚吗?
  17. 应用快速开发--准备篇 工欲善其事必先利其器
  18. 盘点丨2017年国内最酷的10家大数据创业公司
  19. SMR磁盘学习8---Novel Address Mappings for Shingled Write Disks
  20. ffmpeg视频上传功能常用的俩个工具类【1.视频转码=2.视频抓图】

热门文章

  1. Splunk 健康检查之关闭THP
  2. FSM有限状态机-状态图画法
  3. python网上批量下载表格_python读取表格链接批量下载Html文件
  4. 单击Dell电脑window10F11和F12可调节亮度
  5. 婚姻是夫妻之间相互取悦
  6. 使用python解决验证码登录并爬取登录后的个人界面:本篇以古诗文网站为例
  7. 2016年11月12日冠中冠半决赛 奥沙利文 VS 艾伦 全场录像
  8. python注释以什么开始_python注释以什么符号开始
  9. 百度云服务器BCC 搭建ftp(基于Ubuntu 16.04 LTS)新手小白也可以看得懂的教程
  10. 服务器系统板电池失效,服务器电池故障