在Android中,申请WakeLock可以让你的进程持续执行即使手机进入睡眠模式,比较实用的是比如后台有网络功能,可以保证操作持续进行.

方法: 在操作之前加入

PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Constants.TAG);
wakeLock.acquire();
其中newWakeLock有两个参数,第一个参数定义了行为,第二个参数是调试的那个Tag,可以定义为类名。第一个参数取值如下:

PARTIAL_WAKE_LOCK SCREEN_DIM_WAKE_LOCK SCREEN_BRIGHT_WAKE_LOCK FULL_WAKE_LOCK Flag Value CPU Screen Keyboard
On* Off Off
On Dim Off
On Bright Off
On Bright Bright

别忘了在操作完毕之后释放掉

if (wakeLock != null) {
wakeLock.release();
wakeLock = null;
}
还有,要加权限:<uses-permission android:name="android.permission.WAKE_LOCK"/>

不过我看博客,有篇文章说这个方法更省电,更安全一点,文章如下:

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

  1. PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
  2. PowerManager.WakeLock mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag" );
  3. mWakeLock.acquire();
  4. // ...
  5. mWakeLock.release();

不过这个参数要求很大的耗电量 所以使用时候要注意可以参看PowerManager service.

另一种方法是

  1. @Override
  2. protected void onCreate(Bundle icicle) {
  3. super .onCreate(icicle);
  4. getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
  5. }

这个参数也是保持屏幕一直活动不会进入休眠状态,省电一些比上个安全。
还有人说应该这样写,没有手机,测试不了,郁闷:
getWindow (). setFlags ( WindowManager . LayoutParams . FLAG_KEEP_SCREEN_ON , WindowManager . LayoutParams . FLAG_KEEP_SCREEN_ON );

更多相关文章

  1. 一个网友写的android开发随笔,不错,可以参考参考。
  2. android中AudioRecord采集音频的参数说明
  3. Android(安卓)ALSA音频系统架构分析(1)----从Loopback了解Audio
  4. Android+JNI调用–文件操作
  5. Android(安卓)HAL分析报告
  6. Android(安卓)framework源码按键操作的完整流程
  7. Hierarchy Viewer 帮你分析应用程序UI布局
  8. mybatisplus的坑 insert标签insert into select无参数问题的解决
  9. Python技巧匿名函数、回调函数和高阶函数

随机推荐

  1. Android(安卓)悬浮窗弹不出输入法的踏坑
  2. Android小笔记
  3. SetContentView 到底Set去哪里呢?
  4. android微信第三方登录怎么通过code获取o
  5. Android(安卓)中压力测试工具Monkey的用
  6. Android开发指南(34) —— Multimedia an
  7. Android存储空间讲解
  8. 获取android API key
  9. android 的ListView中,如何判断其内容已滚
  10. TextView实现跑马灯的效果