Android 使用Wake Lock

为了延长电池的使用寿命,Android设备会在一段时间后使屏幕变暗,然后关闭屏幕显示,最后停止CPU。WakeLock是一个电源管理系统服务功能,应用程序可以使用它来控制设备的电源状态。

WakeLock可以用来保持CPU运行,避免屏幕变暗和关闭,以及避免键盘背光灯熄灭。

注意:

创建和使用Wake Lock会对应用程序造成的电池电量消耗产生显著的影响。因此,最好只在

确实有必要时使用Wake Lock,并且使用它们的时间越少越好,只要有可 能就释放它们。

屏幕Wake Lock通常用于在用户观看屏幕但是很少与屏幕进行交互期间(例如,播放视频)防止屏幕变暗。

CPU Wake
Lock用于防止设备进入休眠状态,直至执行了一个操作。当服务从意图接收器内启动时常常出现这种情况,因为意图接收器可能在设备休眠期间接收意图。值得注意的是,在这种情况下,系统将在广播接收器的整个onReceive处理程序中使用CPU
Wake Lock。

注意:

如果在广播接收器的onReceive处理程序中启动一个服务或广播一个意图,那么有可能在服务

                       启动以前,所使用的Wake Lock就会被释放。为了确保服务能够执行,需要放置一个独立的Wake Lock。

要创建一个Wake Lock,需要调用电源管理器的newWakeLock,并指定一下一种WakeLock类型:

*  FULL_WAKE_LOCK    保持屏幕全亮、键盘背光灯点亮和CPU运行。

*  SCREEN_BRIGHT_WAKE_LOCK   保持屏幕全亮和CPU运行。

*  SCREEN_DIM_WAKE_LOCK   保持屏幕开启(但是让它变暗)和CPU运行。

*  PARTIAL_WAKE_LOCK   保持CPU运行。

[java] view plain copy

  1. PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
  2. WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");

创建Wake
Lock后,可以通过调用acquire来获取它。可以有选择地指定一个超时值来确保将在尽可能长的时间内保持使用Wake
Lock。当为某个动作使用Wake Lock,而该动作做完成时,需要调用release来让系统管理电源状态。
下面程序显示了创建、获取和释放Wake Lock的一个典型的使用模式。

[java] view plain copy

  1. PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
  2. WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
  3. wakeLock.acquire();
  4. /** Do things requiring the CPU stay active */
  5. wakeLock.release();

需要权限:<uses-permission android:name="android.permission.WAKE_LOCK"/>

时间: 2024-10-12 11:05:23

Android 使用Wake Lock的相关文章

Android笔记:Wake Lock

import android.app.Service; import android.content.Context; import android.os.PowerManager; /**  * Wake Lock是一种锁的机制, 只要有人拿着这个锁,系统就无法进入休眠,  * 可以被用户态程序和内核获得. 这个锁可以是有超时的或者是没有超时的,  * 超时的锁会在时间过去以后自动解锁. 如果没有锁了或者超时了, 内核就  * 会启动休眠的那套机制来进入休眠.  *   * 一.关于int f

android wake lock 电源管理简单学习

需要配置清单文件:<uses-permission android:name="android.permission.WAKE_LOCK" /> 也可以参考我之前写的这篇文章: http://blog.csdn.net/aikongmeng/article/details/39232017 package com.example.wakeup; import android.annotation.SuppressLint; import android.app.Activi

Android Framework层Power键关机流程(二,关机流程)

二,关机流程 从前一篇博文我们知道,当用户长按Power键时会弹出(关机.重新启动,飞行模式等选项)对话框,我们点击关机,则会弹出关机确认对话框.那么从选项对话框到关机确认对话框又是一个什么流程呢.以下我们在简单分析一下: showGlobalActionsDialog()-->showDialog()-->handleShow()-->createDialog()-->onPress()-->shutdown() PhoneWindowManager.java void s

管理Android设备的唤醒状态

当一个Android设备闲置时,首先它的屏幕将会变暗,然后关闭屏幕,最后关闭CPU. 这样可以防止设备的电量被迅速消耗殆尽.但是,有时候也会存在一些特例: Apps such as games or movie apps may need to keep the screen turned on. 例如:用户在玩游戏时,需要保持屏幕常亮 Other applications may not need the screen to remain on, but they may require th

android Application Component研究之Activity(二)

http://blog.csdn.net/windskier/article/details/7172710 本文为原创文章,欢迎转载!转载时请注明出处:http://blog.csdn.net/windskier 上篇文章分析完了task的创建或者复用,接下来接着分析activity在启动过程中还有哪些工作需要去完成?首先给出整个activity的过程图. 1. Starting Window 当该activity运行在新的task中或者进程中时,需要在activity显示之前显示一个Star

[Android] 深入浅出Android App耗电量统计

reference to : http://www.cnblogs.com/hyddd/p/4402621.html 前言 在Android统计App耗电量比较麻烦,直至Android 4.4,它仍没公开“电量统计”API或文档……额,是的,仅没有公开,并不是没有.平时在手机“设置- 电量”看到的数据 就是系统调用内部API的统计结果. 基础概念 1. 手机由众多“部件”组成,所谓“部件”是指:CPU,WIFI,GPS....所以,Android App消耗总电量为 App运行过程中,涉及各部件

转:Android 设置屏幕不待机

本文转载于:http://blog.csdn.net/yudajun/article/details/7748760 Android设置支部待机有两种方法 第一种简单通过设置WindowManager属性实现: 在Activity oncreat()方法中设置 getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 第

Android之monkey Test

一.Monkey简介 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行测试.Monkey测试是一种为了测试软件的稳定性.健壮性的快速有效的方法.   二.Monkey程序介绍 1) Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar: 2) Monkey.ja

Android - 抑制lint的Android XML的警告:tools:ignore

抑制lint的Android XML的警告:tools:ignore 本文地址:http://blog.csdn.net/caroline_wendy Android的XML经常会出现警告,对于一个良好的程序,应该认真对待所有的警告. 除非我们可以确认警告,才可以排除. 显示所有警告的方法:Analyze -> Inspect Code; 就可以检查出所有的警告: 抑制警告使用: tools:ignore. // 忽略全部 xmlns:tools="http://schemas.andro