我使用以下代码设置重复闹钟(每 5 分钟一次)。
public void SetAlarm(Context context)
{
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, Alarm.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 60 * 5, pi); // Millisec * Second * Minute
}
似乎运行良好(运行了近 20 小时),并且在服务器中我可以看到一些持续的消息到达。
然而,时代有一些东西:
我希望时间每五分钟一次,并且在服务器中我似乎在不同时间收到消息。
当手机处于睡眠模式(夜间)时,我添加服务器收到消息的第一个时间序列:
05:13:51,
05:18:54,
05:24:54,
05:28:54,
05:33:51,
05:38:54,
05:52:45,
05:54:54,
05:58:52,
06:04:54,
06:08:54,
06:16:19,
06:18:54,
06:24:54,
06:28:54,
06:34:54,
06:48:42,
06:48:44,
06:58:54,
当我不时使用手机时,还有另一个序列:
11:08:46,
11:13:45,
11:18:48,
11:23:52,
11:33:54,
11:38:47,
11:48:47,
11:58:47,
12:03:52,
12:08:45,
12:14:49,
12:18:43,
12:25:37,
12:28:41,
12:34:56,
12:38:47,
12:43:48,
12:48:56,
12:54:07,
12:58:48,
13:03:43,
13:08:56,
13:14:11,
13:18:55,
13:25:02,
13:28:45,
13:33:43,
13:44:57,
13:48:58,
13:54:57,
13:58:52,
14:03:58
我注意到三个不同的异常现象:
跳过警报(例如服务器中两条消息之间的间隔为 10 分钟)- 对我来说似乎很好,可能是由于连接问题。
两条消息之间间隔 6 分钟,然后间隔 4 分钟。您可以多次看到这种模式。我有一个假设,操作系统做了一些优化,例如,如果它每两分钟有其他警报(例如检查是否有新电子邮件),它会一起运行它们(并且收音机仅打开一次,而不是打开一次)二)。
奇怪的间隔(我无法解释它们) - 你可以看到。
所以我的问题是:
如何强制系统每 5 分钟运行一次(或更努力)?
出现奇怪时机的原因是什么?我写了我的想法,但这些只是想法。
Thanks!