Android电源管理分析

原文连接:http://www.eoeandroid.com/thread-55899-1-1.html


Android的电源管理部分,在纵向上分为四层:
第一部分:Application层
主要是利用Android Frameworks提供的API进行应用级的开发,需要注意的是相关权限的申明:
<
uses-permission

android:name="android.permission.WAKE_LOCK"
/>
<
uses-permission

android:name="android.permission.DEVICE_POWER"
/>
第二部分:Frameworks层
1.
/ frameworks/base/core/java/android/os/PowerManager.java
v
PowerManager:提供对设备的电源进行管理
Ø
常见锁类型
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
Ø
附加锁类型:仅仅是对Screen有影响
Flag Value
Description
ACQUIRE_CAUSES_WAKEUP
This flag will force the screen and/or keyboard to turn on immediately.
ON_AFTER_RELEASE
If this flag is set, the user activity timer will be reset when the WakeLock is released, causing the illumination to remain on a bit longer
v
WakeLock:电源管理对象锁
v
Usage:
Ø
获取PowerManager实例PowerManager pm=(PowerManager) getSystemService(Context.POWER_SERVICE);   
Ø
获取PowerManager.WakeLock实例mWakeLock=pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TEST");
Ø
Device On
mWakeLock.acquire();
Ø
Device Off
mWakeLock.release();
2.
/ frameworks/base/core/java/android/os/Power.java
提供一些电源管理的函数,如reboot()。其是JNI的上层接口,其往下调用android_os_power.cpp
3.
/ frameworks/base/services/java/com/android/server/PowerManagerService.java
电源管理服务,AIDL接口IPowerManager的实现者。
第三部分:JNI层
/frameworks/base/core/jni/android_os_power.cpp

第四部分:Native层
/hardware/libhardware/power/power.c
Linux kernel交互
第五部分:Linux驱动层
/drivers/android/power.c
第六部分:使用电源管理注意事项
1.
可在onCreate时设置该界面的电源管理,在onDestroy时取消设置
2.
可在onResume时设置该界面的电源管理,在onPause时取消设置
3.
注意设置是以Activity为单位,不是以应用为单位
4.
注意在AndroidManifest.xml中声明该应用有设置电源管理的权限
5.
注意加锁解锁要成对出现
6.
注意多个用途最好用多个锁,不要一锁多用,以免出错
7.
注意对运行在后台和异常时对锁的处理
8.
注意在网络连接或传输时最好加锁,以免传输被中断
9.
注意加锁以保证程序逻辑
第七部分:参阅资料



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值