为什么ELAPSED_REALTIME的行为类似于ELAPSED_REALTIME_WAKEUP

时间:2018-03-02 19:33:53

标签: android android-service android-widget android-alarms android-background

代码:

Intent intent = new Intent(context.getApplicationContext(), UpdateWidgetService.class);
PendingIntent service = PendingIntent.getService(context,
                    MyCode,
                    intent,
                    PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
am.setInexactRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), iInterval, service);

该服务记录其活动。为了进行测试,我推动了Android设备进入睡眠状态。我几小时后唤醒设备检查日志,发现服务是根据睡眠期间的间隔运行的。我的理解是ELAPSED_REALTIME不会唤醒设备运行。换句话说,在这种情况下,ELAPSED_REALTIME的行为类似于唤醒设备以运行任务的ELAPSED_REALTIME_WAKEUP。

有人可以对此有所了解吗?代码或我的测试有问题吗?

1 个答案:

答案 0 :(得分:0)

您的手机上还有其他正在运行的应用程序会定期唤醒它。如果手机因其他原因已经醒来,Android会触发您的闹钟。