Android提供的系统服务之--PowerManager(电源服务)
2016-01-18 23:57
543 查看
Android提供的系统服务之--PowerManager(电源服务)
——转载请注明出处:coder-pig
本节引言:
本节主要讲解的Android为我们提供的系统服务中的:PowerManager电源管理的一个API,
用于管理CPU运行,键盘或者屏幕亮起来;不过,除非是迫不得已吧,不然的话,否则应该尽量避免
使用这个类,并且使用完以后一定要及时释放!本节并不太深入的去讲解,因为这个设计到底层的
一些东西,以后需要用到再深入研究,到时再另外写一篇blog总结!所以本节介绍的主要是
一些基本的概念,PowerManager,wakelock锁的机制等等!
[java] view
plain copy print?
import android.content.Context;
import android.content.SharedPreferences;
import android.os.PowerManager;
import android.preference.PreferenceManager;
public class ManageWakeLock {
private static PowerManager.WakeLock mWakeLock = null;
private static PowerManager.WakeLock mPartialWakeLock = null;
private static final boolean PREFS_SCREENON_DEFAULT = true;
private static final boolean PREFS_DIMSCREEN_DEFAULT = false;
private static final String PREFS_TIMEOUT_DEFAULT = "30";
public static synchronized void acquireFull(Context mContext) {
if (mWakeLock != null) {
return;
}
PowerManager mPm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(mContext);
int flags;
flags = PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP;
mWakeLock = mPm.newWakeLock(flags, “ManagerWakeLock”);
mWakeLock.setReferenceCounted(false);
mWakeLock.acquire();
}
public static synchronized void acquirePartical(Context mContext) {
//Check if partial lock already exists
if (mPartialWakeLock != null) {
return;
}
PowerManager mPm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
mPartialWakeLock = mPm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP, “ManagerWakeLock”);
mPartialWakeLock.setReferenceCounted(false);
mPartialWakeLock.acquire();
}
}
public static synchronized void releaseFull() {
if (mWakeLock != null) {
mWakeLock.release();
mWakeLock = null;
}
}
public static synchronized void releasePartial() {
if (mPartialWakeLock != null) {
mPartialWakeLock.release();
mPartialWakeLock = null;
}
}
public static synchronized void releaseAll() {
releaseFull();
releasePartial();
}
}
参考资料:
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
——转载请注明出处:coder-pig
本节引言:
本节主要讲解的Android为我们提供的系统服务中的:PowerManager电源管理的一个API,
用于管理CPU运行,键盘或者屏幕亮起来;不过,除非是迫不得已吧,不然的话,否则应该尽量避免
使用这个类,并且使用完以后一定要及时释放!本节并不太深入的去讲解,因为这个设计到底层的
一些东西,以后需要用到再深入研究,到时再另外写一篇blog总结!所以本节介绍的主要是
一些基本的概念,PowerManager,wakelock锁的机制等等!
本节知识点图:
代码示例:
一个管理WakeLock以及Android设备电源管理的工具类:[java] view
plain copy print?
import android.content.Context;
import android.content.SharedPreferences;
import android.os.PowerManager;
import android.preference.PreferenceManager;
public class ManageWakeLock {
private static PowerManager.WakeLock mWakeLock = null;
private static PowerManager.WakeLock mPartialWakeLock = null;
private static final boolean PREFS_SCREENON_DEFAULT = true;
private static final boolean PREFS_DIMSCREEN_DEFAULT = false;
private static final String PREFS_TIMEOUT_DEFAULT = "30";
public static synchronized void acquireFull(Context mContext) {
if (mWakeLock != null) {
return;
}
PowerManager mPm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(mContext);
int flags;
flags = PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP;
mWakeLock = mPm.newWakeLock(flags, “ManagerWakeLock”);
mWakeLock.setReferenceCounted(false);
mWakeLock.acquire();
}
public static synchronized void acquirePartical(Context mContext) {
//Check if partial lock already exists
if (mPartialWakeLock != null) {
return;
}
PowerManager mPm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
mPartialWakeLock = mPm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP, “ManagerWakeLock”);
mPartialWakeLock.setReferenceCounted(false);
mPartialWakeLock.acquire();
}
}
public static synchronized void releaseFull() {
if (mWakeLock != null) {
mWakeLock.release();
mWakeLock = null;
}
}
public static synchronized void releasePartial() {
if (mPartialWakeLock != null) {
mPartialWakeLock.release();
mPartialWakeLock = null;
}
}
public static synchronized void releaseAll() {
releaseFull();
releasePartial();
}
}
参考资料:
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
相关文章推荐
- Android提供的系统服务之--AlarmManager(闹钟服务)
- 《Android开发艺术探索》读书笔记 (4) 第4章 View的工作原理
- android Launcher文件夾功能分析
- 下载编译 Qt 5 for Android 并新建工程
- 将Android Studio的设置恢复到初始化
- Android5.0材料设计(二)
- Android5.0材料设计(一)
- 我的Android进阶之旅------>关于使用CSDN-markdown编辑器来编写博客
- Android开发从零开始(1)--2016.01.18
- Android Activity Fragment 生命周期
- 安装谷大家的Ingress(Android)
- mac 上 配置 Android NDK 环境
- Android Apk 代码混淆与资源文件混淆实战
- Android 快速开发 打造万能的ListView GridView 适配器
- 极光推送之服务器端向android等客户端推送实例
- Android apk集成
- Android ORM框架之GreenDao的使用方法
- ArcGIS4Android 2:多个安卓module共享jar和so文件
- Android开启StrictMode模式
- android中的sp和wp