Wakelock API详解
官方资料
http://developer.android.com/intl/zh-CN/reference/android/os/PowerManager.WakeLock.html
http://developer.android.com/intl/zh-CN/reference/android/os/PowerManager.html
示例
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
..screen will stay on during this section..
wl.release();
Tips
Dim:逐渐变暗
Bright:保持亮度
类型
ACQUIRE_CAUSES_WAKEUP
持锁后唤醒屏幕,其他的类型锁不会唤醒屏幕,而只是保持屏幕常亮,Dim 或 Bright。与PARTIAL_WAKE_LOCK互斥。
FULL_WAKE_LOCK
在Android4.2(API 17)后被废弃,建议采用
FLAG_KEEP_SCREEN_ON代替。
保持屏幕与键盘背光均为最大亮度,当Power键按下后,此锁会被系统释放。屏幕与CPU均关闭,与PARTIAL_WAKE_LOCK相反。
ON_AFTER_RELEASE
当此锁被释放时,将重置用户Activity计时器,能够让屏幕亮的更久些。但是当屏幕没有点亮时,不会唤醒屏幕,如果想这样,请使用ACQUIRE_CAUSES_WAKEUP。与PARTIAL_WAKE_LOCK互斥。
PARTIAL_WAKE_LOCK
持有此锁会使CPU处于运行状态,而屏幕和键盘背光将可以熄灭。如果Power键按下,屏幕会关闭,而CPU会被保持,直到此锁被释放。
SCREEN_BRIGHT_WAKE_LOCK
在Android3.2(API 13)后被废弃,使用
FLAG_KEEP_SCREEN_ON代替。
持锁将保持屏幕背光为最大亮度,而键盘背光可以熄灭。按下Power键后,此锁将会被系统自动释放,释放后屏幕与CPU均关闭。
SCREEN_DIM_WAKE_LOCK
在Android4.2(API 17)后被废弃,使用
FLAG_KEEP_SCREEN_ON代替。
持锁将保持屏幕背光常亮,但可以Dim,键盘背光可以熄灭。同样,在按下Power键后会被系统自动释放,CPU与屏幕均关闭。
使用方法
首先,使用PowerManager的newWakelock方法:
PowerManager.WakeLock newWakeLock(int levelAndFlags, String tag)
作用:新建一个名为tag的levelAndFlags类型的wakelock。
参数:
levelAndFlags:即为上边所介绍的类型;
tag:锁的名字,每个wakelock有唯一的名字。
例:
PowerManager pm = (PowerManager)mContext.getSystemService(
Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(
PowerManager.SCREEN_DIM_WAKE_LOCK
| PowerManager.ON_AFTER_RELEASE,
TAG);
新建成功后,可以使用wakelock的API接口进行操作了。
接口操作
void acquire() 持锁;
void acquire(long timeout) 持锁,timeout毫秒后自动释放;
boolean isHeld() 返回锁的状态,true为正被持锁,false为被释放或未被持锁;
void release() 释放锁;
void setReferenceCounted(boolean value) 设置wakelock的计数机制,默认为计数。true为计数,false为不计数。
计数:每一个acquire必须对应一个release;
不计数:无论有多少个acquire,一个release就可以释放。
void setWorkSource(WorkSource ws) 设置工作域。可能有多个应用将会用到同一个wakelock,这个是用来确认这个wakelock是给哪个应用使用。如service;
String toString() 返回当前目标的一些描述。
关于FLAG_KEEP_SCREEN_ON
FLAG_KEEP_SCREEN_ON
当前窗口在显示给用户的时候,屏幕会保持常亮,Bright。
用法:
Window w = activity.getWindow(); // in Activity's onCreate() for instance
w.setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
);
Wakelock API详解的更多相关文章
- Java 8 Stream API详解--转
原文地址:http://blog.csdn.net/chszs/article/details/47038607 Java 8 Stream API详解 一.Stream API介绍 Java8引入了 ...
- jqGrid APi 详解
jqGrid APi 详解 jqGrid皮肤 从3.5版本开始,jqGrid完全支持jquery UI的theme.我们可以从http://jqueryui.com/themeroller/下载我们所 ...
- hibernate学习(2)——api详解对象
1 Configuration 配置对象 /详解Configuration对象 public class Configuration_test { @Test //Configuration 用户 ...
- 网络编程socket基本API详解(转)
网络编程socket基本API详解 socket socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket ...
- 转】Mahout推荐算法API详解
原博文出自于: http://blog.fens.me/mahout-recommendation-api/ 感谢! Posted: Oct 21, 2013 Tags: itemCFknnMahou ...
- dom4j api 详解--XPath 节点详解
dom4j api 详解 http://871421448.iteye.com/blog/1546955 XPath 节点 http://www.w3school.com.cn/xpath/xpath ...
- 百度地图API详解之事件机制,function“闭包”解决for循环和监听器冲突的问题:
原文:百度地图API详解之事件机制,function"闭包"解决for循环和监听器冲突的问题: 百度地图API详解之事件机制 2011年07月26日 星期二 下午 04:06 和D ...
- 【Unity编程】Unity中关于四元数的API详解
本文为博主原创文章,欢迎转载,请保留出处:http://blog.csdn.net/andrewfan Unity中关于四元数的API详解 Quaternion类 Quaternion(四元数)用于计 ...
- SDN 网络系统之 Mininet 与 API 详解
SDN 网络系统之 Mininet 与 API 详解 Mininet 是轻量级的软件定义网络系统平台,同时提供了对 OpenFlow 协议的支持.本文主要介绍了 Mininet 的相关概念与特性,并列 ...
随机推荐
- Scrambled Polygon(凸多边形,斜率)
Scrambled Polygon Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 7805 Accepted: 3712 ...
- 【Java】【Fulme】Flume-NG源代码阅读之SpoolDirectorySource
org.apache.flume.source.SpoolDirectorySource是flume的一个经常使用的source,这个源支持从磁盘中某目录获取文件数据.不同于其它异步源,这个源可以避免 ...
- 循环训练(for的嵌套、while、do while)以及异常处理
For的嵌套 练习一: 练习二: 练习三: 练习四: while的使用方法: 示例一: 示例二: 示例三: while的练习题: do while的使用示例: 异常处理示例: try catch ...
- BZOJ 1600: [Usaco2008 Oct]建造栅栏( dp )
QAQ我没读过书...四边形都不会判定了 简单的dp.... --------------------------------------------------------------------- ...
- 4.7 《硬啃设计模式》 第24章 麻烦的多角关系 - 中介者模式(Mediator Pattern)简介
在Windows程序中,有时候界面控件之间的交互会很麻烦,如:A控件显示什么的时候,B控件要显示什么,另外C控件要不可用,同样其它控件也会有类似的复杂要求.控件与控件之间很容易形成复杂的多角关系了.现 ...
- 进度记录 和 安装imagick时Cannot locate header file MagickWand.h错误的解决
修改php.ini文件,已使php支持扩展的功能 [root@localhost imagick-2.2.2]# ./configure --with-php-config=/usr/local/ph ...
- 转:JS线程和JS阻塞页面加载的问题
前几日写了一篇文章,介绍了js阻塞页面加载的问题.当时是通过例子来验证的.今天,我介绍一下浏览器内核,从原理上介绍一下js阻塞页面加载的原因. 浏览器的内核是多线程的,它们在内核制控下相互配合以保持同 ...
- DELPHI编写服务程序总结
DELPHI编写服务程序总结 一.服务程序和桌面程序的区别 Windows 2000/XP/2003等支持一种叫做“系统服务程序”的进程,系统服务和桌面程序的区别是:系统服务不用登陆系统即可运行:系统 ...
- hibernate 延长加载范围 4.2
1. 关闭延迟加载功能 lazy="false"2.修改抓取策略 fetch="join"直接查询关联数据,一个联接查询搞定3.使用Hibernate对象的in ...
- perl encode_utf8 和decode_utf8
encode_utf8 等于 $octets = encode_utf8($string); 这个字符串 在$string 在Perl的内部格式,返回结果是作为一个顺序的字节. 因为所有的可能的字符串 ...