注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

时间记录器

记录我的Linux、Android学习之路

 
 
 

日志

 
 

Android电源管理分析(zt)  

2011-10-14 11:14:28|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

原著:http://lifei219317.blog.163.com/blog/static/571612552011018112926462/

Android的电源管理部分,在纵向上分为四层:< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />

< xmlnamespace prefix ="v" ns ="urn:schemas-microsoft-com:vml" />

第一部分: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

>WakeLock:电源管理对象锁

>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.       注意加锁以保证程序逻辑

第七部分:参阅资料

1.http://jaymsimusic.javaeye.com/blog/764629

2.http://www.rosoo.net/a/201012/10599.html

  评论这张
 
阅读(492)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017