Android中通过各种Lock锁对电源进行控制:

Flag Value CPU Screen Keyboard
PARTIAL_WAKE_LOCK On* Off Off
SCREEN_DIM_WAKE_LOCK On Dim Off
SCREEN_BRIGHT_WAKE_LOCK On Bright Off
FULL_WAKE_LOCK On Bright Bright

private static PowerManager.WakeLock mWakeLock;

PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);

mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);

加锁:

mWakeLock.acquire();

解锁:

mWakeLock.release();

需要注意:

0. WakeLock是activity级的

1. 加锁/解锁必须成对出现

2. 可以多次加锁,同时解锁次数等于加锁次数才能完成解锁

3. 未加锁时进行解锁操作会抛出异常,程序挂掉

可以用下面的方法保证不多次加锁及未加锁时进行解锁:

if (!mWakeLock.isHeld())

mWakeLock.acquire();

if (mWakeLock.isHeld())

mWakeLock.release();

更多相关文章

  1. Android 自定义View之手势解锁控件
  2. 详解如何用WPF图形解锁控件ScreenUnLock
  3. ScreenUnLock-图形解锁控件使用详解
  4. c语言如何统计字符串中每个字符出现的次数?
  5. LeetCode 题解 | 1312. 让字符串成为回文串的最少插入次数
  6. LeetCode 题解 | 1297.子串的最大出现次数
  7. 520|解锁Python表白新姿势
  8. 基于PHP实现短信验证码发送次数限制解析
  9. php统计2个数据中同时出现的次数最多的单词

随机推荐

  1. Android(安卓)InputStreamReader 解析gbk
  2. Android(安卓)回调机制
  3. ImageView的属性android:scaleType,即Imag
  4. 解决ArcGIS Android(安卓)Could not find
  5. android ubuntu下NDK的开发
  6. Android(安卓)SDK开发 -- TitleBar重构 (
  7. Android中SQLite数据库操作(1)——使用SQL
  8. Android(安卓)常用样式设置
  9. 写在前面
  10. Android中的布局管理