Android AlarmManager实现在熄屏休眠时执行任务

来源:互联网 发布:windows logo png 编辑:程序博客网 时间:2024/06/11 05:21

考虑到功耗问题,Android系统在熄屏一段时间后进入休眠。

为了执行特定的任务,可以使用WakeLock获取CPU锁,但是这种方式有个弊端,CPU无法进入休眠,一旦进入休眠,线程就被挂起,无法执行任务。

于是就到了AlarmManager大放异彩的时候了。

// 闹钟Intent intentRepeat = new Intent(context, CoreService.class);PendingIntent sender = PendingIntent.getService(context, 0,intentRepeat, 0);long triggerTime = SystemClock.elapsedRealtime() + 60 * 1000; // 第一次时间long intervalTime = 5 * 60 * 1000; // msAlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);/** * AlarmManager.ELAPSED_REALTIME表示闹钟在手机睡眠状态下不可用,该状态下闹钟使用相对时间( * 相对于系统启动开始),状态值为3; *  * AlarmManager.ELAPSED_REALTIME_WAKEUP表示闹钟在睡眠状态下会唤醒系统并执行提示功能, * 该状态下闹钟也使用相对时间,状态值为2; *  * AlarmManager.RTC表示闹钟在睡眠状态下不可用,该状态下闹钟使用绝对时间,即当前系统时间,状态值为1; *  * AlarmManager.RTC_WAKEUP表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟使用绝对时间,状态值为0; */am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerTime,intervalTime, sender);

设置成10分钟,实际测试结果如下:

14:21

14:29

14:39

14:53

14:57

15:08

可以看到间隔并不是精确的10分钟。

后面测试一下AlarmManager.RTC_WAKEUP的实际运行效果。

0 0
原创粉丝点击