Android系统休眠对程序的影响以及处理
来源:互联网 发布:date pattern java 编辑:程序博客网 时间:2024/06/06 08:59
Android系统在用户长时间不操作时,为了节省资源,系统会选择休眠。在休眠过程中自定义的Timer、Handler、Thread、Service等都会暂停。而有时候这种机制会影响到我们程序的正常运行。那如何避免系统休眠对我们程序的影响呢?
以下已Service服务为例说明在系统休眠的状态下如何唤醒系统并执行我们自定义的Service服务。
一、单次Service服务的开启
1、方法:在需要执行Service服务时获取电源锁,并在执行完毕释放电源锁。
2、代码举例:
public class WakeLockUtil{ public static WakeLock wakeLock = null; public static void acquireWakeLock(Activity myActivity) { if (null == wakeLock) { PowerManager pm = (PowerManager) myActivity.getSystemService(Context.POWER_SERVICE); wakeLock = pm.newWakeLock(PowerManager.ON_AFTER_RELEASE | PowerManager.PARTIAL_WAKE_LOCK, "wakeLockUtil"); // PARTIAL_WAKE_LOCK:保持CPU 运转,屏幕和键盘灯有可能是关闭的 -- 最常用,保持CPU运转 // SCREEN_DIM_WAKE_LOCK:保持CPU 运转,允许保持屏幕显示但有可能是灰的,允许关闭键盘灯 // SCREEN_BRIGHT_WAKE_LOCK:保持CPU 运转,允许保持屏幕高亮显示,允许关闭键盘灯 // FULL_WAKE_LOCK:保持CPU 运转,保持屏幕高亮显示,键盘灯也保持亮度 // ACQUIRE_CAUSES_WAKEUP:强制使屏幕亮起,这种锁主要针对一些必须通知用户的操作. // ON_AFTER_RELEASE:当锁被释放时,保持屏幕亮起一段时间 if (null != wakeLock) { wakeLock.acquire(); // 立即获取电源锁 // wakeLock.acquire(2000); // 2秒后获取电源锁 } } } public static void releaseWakeLock(Activity myActivity) { if (null != wakeLock) { wakeLock.release(); wakeLock = null; } }}
3、方法讲解
acquireWakeLock():为获取电源锁,即唤醒系统。
releaseWakeLock():为释放电源锁(要在执行完毕后及时释放电源锁,否则会比较耗电)
二、定时重复的Service开启
1、利用Android自带的定时器AlarmManager实现
Intent intent = new Intent(mContext, ServiceTest.class);PendingIntent pi = PendingIntent.getService(mContext, 1, intent, 0);AlarmManager alarm = (AlarmManager) getSystemService(Service.ALARM_SERVICE);if(alarm != null){ alarm.cancel(pi); // 闹钟在系统睡眠状态下会唤醒系统并执行提示功能 alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000, 2000, pi); //alarm.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), pi);}
2、该定时器可以启动Service服务、发送广播、跳转Activity,并且会在系统睡眠状态下唤醒系统。所以该方法不用获取电源锁和释放电源锁。
0 0
- Android系统休眠对程序的影响以及处理
- Android系统休眠对程序的影响以及处理
- Android随记------休眠状态对Camera预览的影响
- Android 休眠状态对Camera预览的影响
- Android休眠对心跳中断带来的影响
- android sharedUserId对程序升级的影响
- Android抓取系统logcat以及selinux对其影响
- Android推送、智能心跳解决方案、手机休眠对心跳的影响
- PHP中的异常处理对程序执行效率的影响
- Android系统中TouchEvent的传递流程以及相关函数返回值True和False对流程的影响
- 对Linux系统休眠的理解
- 对Linux系统休眠的理解
- 对Linux系统休眠的理解
- 对Linux系统休眠的理解
- android 系统的休眠与唤醒+linux 系统休眠
- 浏览器对程序的影响
- 【Android休眠】之Android对PowerKey事件的处理(1)代码流程
- 【Android休眠】之Android对PowerKey事件的处理(2)EventHub
- AOJ 455 POJ 1088 滑雪 dfs + 记忆化搜索
- Rxjava 概览
- 《虚拟化技术原理与实现》读书笔记之前序(一)
- php通过拓展ssh2控制linux
- opencv图像平滑处理
- Android系统休眠对程序的影响以及处理
- 探究 Dagger2
- R语言十八讲(三)—数据输入
- 【DP+广搜】有向图的单源点最短路径
- linux svn 服务器搭建及开机启动
- 程序的卸载
- 笔记:shiro与spring整合
- 栈帧
- Spark2.0机器学习系列之3:决策树及Spark 2.0-MLlib、Scikit代码分析