转自:http://blog.csdn.net/yudajun/article/details/7748760

最近做项目时正好用到,进行了一下总结:

Android设置支部待机有两种方法

第一种简单通过设置WindowManager属性实现:

在Activity oncreat()方法中设置

getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);


第二种使用android的PowerManager和PowerManager.WakeLock实现:

//添加锁

[java] view plain copy
  1. privatevoidacquireWakeLock(){
  2. if(wakeLock==null){
  3. Logger.d("Acquiringwakelock");
  4. PowerManagerpm=(PowerManager)getSystemService(Context.POWER_SERVICE);
  5. wakeLock=pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK,this.getClass().getCanonicalName());
  6. wakeLock.acquire();
  7. }
  8. }
  9. //释放锁
  10. privatevoidreleaseWakeLock(){
  11. if(wakeLock!=null&&wakeLock.isHeld()){
  12. wakeLock.release();
  13. wakeLock=null;
  14. }
  15. }
acquireWakeLock()方法在Activity的 onResume中被调用。releaseWakeLock()方法在Activity的 onPause中被调用。利用Activiy的生命周期,巧妙的让acquire()和release()成对出现。


关于int flags

各种锁的类型对CPU 、屏幕、键盘的影响:

PARTIAL_WAKE_LOCK:保持CPU 运转,屏幕和键盘灯有可能是关闭的。

SCREEN_DIM_WAKE_LOCK:保持CPU 运转,允许保持屏幕显示但有可能是灰的,允许关闭键盘灯

SCREEN_BRIGHT_WAKE_LOCK:保持CPU 运转,允许保持屏幕高亮显示,允许关闭键盘灯

FULL_WAKE_LOCK:保持CPU 运转,保持屏幕高亮显示,键盘灯也保持亮度


最后不要忘记!

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

<uses-permission android:name="android.permission.WAKE_LOCK" />你可能还需要<uses-permission android:name="android.permission.DEVICE_POWER" />

更多相关文章

  1. Android集成微信SDK:微信分享
  2. Android之使用AIDL时的跨进程回调—Server回调Client
  3. Activity学习(一):生命周期
  4. android postDelayed 方法的简单使用
  5. 实现退出时关闭所有Activity的方法
  6. Android7.1修改系统默认多媒体音量大小
  7. Android面试知识点汇总
  8. android 理解Fragment生命周期
  9. 如何锁定横屏或竖屏

随机推荐

  1. 【Android(安卓)Developers Training】 2
  2. Android滑动回弹效果
  3. Flutter知识点:数据存储之SharedPreferen
  4. android内存泄露 mat
  5. Application Resources
  6. 【原】android本地推送
  7. Android(安卓)-- Messenger与Service
  8. Android内核编译图文教程(HTC G10 Ubuntu
  9. ScrollView 使用fillViewport铺满全屏
  10. Android(安卓)开源框架选择