Android电源管理
一、 相关概念
1. 出于节电的需要,一般应用在用户一段时间无操作的情况下屏幕变暗,然后进后休眠状态
2. 用户只能在”设置->声音和显示”中设置所有应用默认的屏幕亮度和进行待机的时间
3. 电源管理的实现分内核应用两部分,通过下面介绍的接口,我们可以设置应用程序的电源管理,以控制与其休眠相关的状态(是否需要进入休眠,调整cpu频率,键盘灯的开关,屏幕的亮暗等)
二、 设置电源管理常用的几种状态
PARTIAL_WAKE_LOCK 屏幕关,键盘灯关,不休眠
SCREEN_MID_WAKE_LOCK 屏幕灰,键盘灯关,不休眠
SCREEN_BRIGHT_WEEK_LOCK 屏幕亮,键盘灯关,不休眠
FULL_WAKE_LOCK 屏幕亮,键盘灯亮,不休眠
ACQUIRE_CAUSES_WAKEUP 一旦有请求锁时强制打开Screen和keyboard light
ON_AFTER_RELEASE 在释放锁时reset activity timer
Note:
如果申请了partial wakelock,那么即使按Power键,系统也不会进Sleep,如Music播放时
如果申请了其它的wakelocks,按Power键,系统还是会进Sleep
void userActivity(long when, boolean noChangeLights);//User activity事件发生,设备会被切换到Full on的状态,同时Reset Screen off timer.
三、 使用电源管理注意事项
1. 可在onCreate时设置该界面的电源管理,在onDestroy时取消设置
2. 可在onResume时设置该界面的电源管理,在onPause时取消设置
3. 注意设置是以Activity为单位,不是以应用为单位
4. 注意在AndroidManifest.xml中声明该应用有设置电源管理的权限
5. 注意加锁解锁要成对出现
6. 注意多个用途最好用多个锁,不要一锁多用,以免出错
7. 注意对运行在后台和异常时对锁的处理
8. 注意在网络连接或传输时最好加锁,以免传输被中断
9. 注意加锁以保证程序逻辑
四、 代码举例
1. 源码修改
1) 引入电源管理包,以使用相关类
import android.os.PowerManager;
2) 类中加入变量
PowerManager.WakeLock mWakeLock;
3) 修改onCreate
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PowerManager pm =
(PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP,
"XYTEST");
mWakeLock.acquire();
}
4) 修改onDestroy
public void onDestroy()
{
super.onDestroy();
mWakeLock.release();
}
2. AndroidManifest.xml文件修改
<uses-permission android:name="android.permission.WAKE_LOCK"/>
分享到:
相关推荐
Android 电源管理
很好的android资料,详细介绍android电源管理
android-power-management android平台电源管理描述,做安卓电源管理必须的文档。
其中PowerManagerService.java是核心, Power.java提供底层的函数接口,与JNI层进行交互, JNI层的代码主要在文件android_os_Power.cpp中,与Linux kernel交互是通过Power.c来实现的, Android电源管理跟Kernel的交互...
android 电源管理解决方案和linux 内核的电源管理解析
Android电源管理
Android电源管理模块.pdf
Android电源管理剖析
Android电源管理相关应用技巧分享 android锁屏状态下唤醒其实可以不用按电源键的, 按2次MENU键 你会发现--唤醒了
完整的Android电源管理、电量信息显示例子,包括整个工程,导入IDE即可使用。
两个文档,一个分别从Java应用层面,framework层面, Linux内核层面对android电源管理进行详细的讨论;另一个介绍了Linux系统Suspend框架,以及Wake Lock和Suspend/Resume的构架和接口实现。
android 电源管理相关,有suspend,和resume用法的描述
浅析Wakelock机制与Android电源管理.pdf