为了延长电池的使用寿命,Android设备会在一段时间后使屏幕变暗,然后关闭屏幕显示,最后停止CPU。WakeLock是一个电源管理系统服务功能,应用程序可以使用它来控制设备的电源状态。
WakeLock可以用来保持CPU运行,避免屏幕变暗和关闭,以及避免键盘背光灯熄灭。
注意:
创建和使用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运行。
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
创建Wake Lock后,可以通过调用acquire来获取它。可以有选择地指定一个超时值来确保将在尽可能长的时间内保持使用Wake Lock。当为某个动作使用Wake Lock,而该动作做完成时,需要调用release来让系统管理电源状态。 下面程序显示了创建、获取和释放Wake Lock的一个典型的使用模式。
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wakeLock.acquire();
/** Do things requiring the CPU stay active */
wakeLock.release();
需要权限:
<uses-permission android:name="android.permission.WAKE_LOCK"/>