您现在的位置是:首页 > 文章详情

Android -- PowerManager和PowerManager.WakeLock

日期:2017-09-30点击:529

PowerManager.WakeLock                                                      

PowerManager.WakerLock是我分析Standup Timer源代码时发现的一个小知识点,Standup Timer 用WakeLock保证程序运行时保持手机屏幕的恒亮(程序虽小但也做得相当的细心,考虑的很周到)。PowerManager 和PowerManager.WakerLock7用于对Android设备的电源进行管理。

PowerManager:This class gives you control of the power state of the device.

PowerManager.WakeLock: lets you say that you need to have the device on.

Android中通过各种Lock锁对电源进行控制,需要注意的是加锁和解锁必须成对出现。先上一段Standup Timer里的代码然后进行说明。

复制代码
private void acquireWakeLock() { if (wakeLock ==null) { Logger.d("Acquiring wake lock"); PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, this.getClass().getCanonicalName()); wakeLock.acquire(); } } private void releaseWakeLock() { if (wakeLock !=null&& wakeLock.isHeld()) { wakeLock.release(); wakeLock =null; } }
复制代码

acquireWakeLock()方法中获取了 SCREEN_DIM_WAKE_LOCK锁,该锁使 CPU 保持运转,屏幕保持亮度(可以变灰)。这个函数在Activity的 onResume中被调用。releaseWakeLock()方法则是释放该锁。它在Activity的 onPause中被调用。利用Activiy的生命周期,巧妙的让 acquire()和release()成对出现。

复制代码
@Override protectedvoid onResume() { super.onResume(); //获取锁,保持屏幕亮度   acquireWakeLock(); startTimer(); }
复制代码

PowerManager和WakeLock的操作步骤                                     

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);通过Context.getSystemService().方法获取PowerManager实例。

然后通过PowerManager的newWakeLock((int flags,String
tag)来生成WakeLock实例。int Flags指示要获取哪种WakeLock,不同的Lock对cpu 、屏幕、键盘灯有不同影响。

获取WakeLock实例后通过acquire()获取相应的锁,然后进行其他业务逻辑的操作,最后使用release()释放

int flags                                                                                    

复制代码
PARTIAL_WAKE_LOCK: 保持CPU 运转,屏幕和键盘灯可以关闭。 SCREEN_DIM_WAKE_LOCK: 保持CPU 运转,保持屏幕显示,但可以变暗,允许键盘灯关闭。 SCREEN_BRIGHT_WAKE_LOCK:保持CPU 运转,允许保持屏幕高亮显示,允许键盘灯关闭。 FULL_WAKE_LOCK: 保持CPU 运转,保持屏幕和键盘灯都高亮显示。 ACQUIRE_CAUSES_WAKEUP: 当获取锁后,立刻亮屏,典型地使用在通知中,以让用户立刻查看。 ON_AFTER_RELEASE: 在释放锁(release())后,手机屏幕仍会继续亮一会儿。
复制代码

权限                                                                                            

要进行电源的操作需要在AndroidManifest.xml中声明该应用有设置电源管理的权限。

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

我是天王盖地虎的分割线                                               




本文转自我爱物联网博客园博客,原文链接:http://www.cnblogs.com/yydcdut/p/3885860.html,如需转载请自行联系原作者

原文链接:https://yq.aliyun.com/articles/361925
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章