android电源管理PowerManagerPowerManager这个类提供了电源管理的一些功能,比如可以让屏幕或者键盘亮起来
android电源管理PowerManager
PowerManager这个类提供了电源管理的一些功能,比如可以让屏幕或者键盘亮起来等。还有对设备的重启的api
官网是这么解释的
PowerManager Class Overview
这个类提供了控制设备电源状态的管理功能。
设备的电池的持续时间(寿命)会受到使用这个API的重要影响。在非必要的情况下不要使用WakeLock,即使必须使用,也要最低限度使用这个api,使用完之后应确保立即释放掉。
通过 Context.getSystemService()获得PowerManager的实例。
使用PowerManager的实例去获得一个WakeLock对象,使用这个方法:newWakeLock() 创建一个PowerManager.WakeLock 对象.使用WakeLock对象可以去管理设备电源的状态,使用方法特别简单:如下例子
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag"); wl.acquire(); //在释放之前,屏幕一直亮着(有可能会变暗,但是还可以看到屏幕内容) wl.release();
下面定义的这些标记不同程度的影响系统电源。这些标记都是独占的,并且每次只能指定其中一个。
PARTIAL_WAKE_LOCKSCREEN_DIM_WAKE_LOCKSCREEN_BRIGHT_WAKE_LOCKFULL_WAKE_LOCK如果你使用的是局部唤醒锁的话(使用PARTIAL_WAKE_LOCK标志),CPU会继续运行,将忽略任何的计时器,甚至按下电源按钮。其他的唤醒锁话,CPU也会继续运转,但是使用者仍然可以按电源按钮让设备睡眠。
另外,你可以使用两个以上的标记,但是他只影响屏幕的行为。和 PARTIAL_WAKE_LOCK 同时使用的话,没有任何影响。
ACQUIRE_CAUSES_WAKEUPON_AFTER_RELEASE一个小例子
package com.example.powers;import android.os.Bundle;import android.os.PowerManager;import android.os.PowerManager.WakeLock;import android.app.Activity;import android.content.Context;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.support.v4.app.NavUtils;public class MainActivity extends Activity {private WakeLock wakeLock;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overrideprotected void onResume() {super.onResume();// 开始获得唤醒锁acquireWakeLock();}@Overridepublic void finish() {super.finish();// 释放锁releaseWakeLock();}private void acquireWakeLock() {if (wakeLock == null) {Log.d("debug", "Acquiring wake lock");PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, this.getClass().getCanonicalName());wakeLock.acquire();}}private void releaseWakeLock() {if (wakeLock != null && wakeLock.isHeld()) {wakeLock.release();wakeLock = null;}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.activity_main, menu);return true;}}