Android提供的系统服务之--PowerManager(电源服务)

来源:互联网 发布:中国人工智能行业报告 编辑:程序博客网 时间:2024/06/09 13:47

Android提供的系统服务之--PowerManager(电源服务)

                                                          ——转载请注明出处:coder-pig



本节引言:

本节主要讲解的Android为我们提供的系统服务中的:PowerManager电源管理的一个API,

用于管理CPU运行,键盘或者屏幕亮起来;不过,除非是迫不得已吧,不然的话,否则应该尽量避免

使用这个类,并且使用完以后一定要及时释放!本节并不太深入的去讲解,因为这个设计到底层的

一些东西,以后需要用到再深入研究,到时再另外写一篇blog总结!所以本节介绍的主要是

一些基本的概念,PowerManager,wakelock锁的机制等等!




本节知识点图:




代码示例:

一个管理WakeLock以及Android设备电源管理的工具类:

[java] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. import android.content.Context;  
  2. import android.content.SharedPreferences;  
  3. import android.os.PowerManager;  
  4. import android.preference.PreferenceManager;  
  5.   
  6. public class ManageWakeLock {  
  7.     private static PowerManager.WakeLock mWakeLock = null;  
  8.     private static PowerManager.WakeLock mPartialWakeLock = null;  
  9.     private static final boolean PREFS_SCREENON_DEFAULT = true;  
  10.     private static final boolean PREFS_DIMSCREEN_DEFAULT = false;  
  11.     private static final String PREFS_TIMEOUT_DEFAULT = "30";  
  12.   
  13.     public static synchronized void acquireFull(Context mContext) {  
  14.         if (mWakeLock != null) {  
  15.              return;  
  16.         }  
  17.   
  18.         PowerManager mPm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);  
  19.         SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(mContext);  
  20.   
  21.         int flags;  
  22.   
  23.         flags = PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP;  
  24.   
  25.         mWakeLock = mPm.newWakeLock(flags, “ManagerWakeLock”);  
  26.         mWakeLock.setReferenceCounted(false);  
  27.         mWakeLock.acquire();  
  28.     }  
  29.   
  30.     public static synchronized void acquirePartical(Context mContext) {  
  31.         //Check if partial lock already exists  
  32.         if (mPartialWakeLock != null) {  
  33.             return;  
  34.         }  
  35.   
  36.         PowerManager mPm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);  
  37.         mPartialWakeLock = mPm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK  
  38.                                 | PowerManager.ACQUIRE_CAUSES_WAKEUP, “ManagerWakeLock”);  
  39.   
  40.         mPartialWakeLock.setReferenceCounted(false);  
  41.             mPartialWakeLock.acquire();  
  42.         }  
  43.     }  
  44.     public static synchronized void releaseFull() {  
  45.         if (mWakeLock != null) {  
  46.             mWakeLock.release();  
  47.             mWakeLock = null;  
  48.         }  
  49.     }  
  50.   
  51.     public static synchronized void releasePartial() {  
  52.         if (mPartialWakeLock != null) {  
  53.              mPartialWakeLock.release();  
  54.              mPartialWakeLock = null;  
  55.         }  
  56.     }  
  57.   
  58.     public static synchronized void releaseAll() {  
  59.         releaseFull();  
  60.         releasePartial();  
  61.     }  
  62. }  



参考资料:

http://www.open-open.com/lib/view/open1343207436974.html

http://blog.csdn.net/xieqibao/article/details/6562256

http://blog.chinaunix.net/uid-27411029-id-4040727.html


0 0
原创粉丝点击