我写了一个非常基本的应用程序“Nag for Pebble” - 它所做的只是在给定的时间间隔内唤醒,然后重新安排下次唤醒并立即退出应用程序。所以效果是 - “背景”在给定的时间间隔嗡嗡声。Wakup API:唤醒时间不一致
问题是 - 即使实际时间一致,唤醒之间的时间也会不断增加。我正在做这样的事情:
time_t next= time(NULL);
next += buzz_interval*60;
wakeup_schedule(next, 0, false);
因此,如果buzz_interval是5分钟,它会每5分钟醒来。问题是在唤醒之后的一段时间内,这些问题首先难以察觉,然后错误累积起来。不知道是什么原因造成的,以及如何补偿。
这里的complete source如果需要。
更新:下面是一个日志,显示下一次唤醒(下一次)下一个实际唤醒时间(当前时间)的计划时间。正如你在几次醒来之后可以看到的那样,它会增加一秒,然后再增加两秒。 Welp,
[DEBUG] main.c:24: Current time = 20:49:59
[DEBUG] main.c:25: Buzz Interval = 1, buzz_start = 0
[DEBUG] main.c:66: Next time = 20:50:59
[DEBUG] main.c:24: Current time = 20:50:59
[DEBUG] main.c:25: Buzz Interval = 1, buzz_start = 0
[DEBUG] main.c:66: Next time = 20:51:59
[DEBUG] main.c:24: Current time = 20:52:00
[DEBUG] main.c:25: Buzz Interval = 1, buzz_start = 0
[DEBUG] main.c:66: Next time = 20:53:00
[DEBUG] main.c:24: Current time = 20:53:00
[DEBUG] main.c:25: Buzz Interval = 1, buzz_start = 0
[DEBUG] main.c:66: Next time = 20:54:00
[DEBUG] main.c:24: Current time = 20:54:00
[DEBUG] main.c:25: Buzz Interval = 1, buzz_start = 0
[DEBUG] main.c:66: Next time = 20:55:00
[DEBUG] main.c:24: Current time = 20:55:01
[DEBUG] main.c:25: Buzz Interval = 1, buzz_start = 0
[DEBUG] main.c:66: Next time = 20:56:01
[DEBUG] main.c:24: Current time = 20:56:01
[DEBUG] main.c:25: Buzz Interval = 1, buzz_start = 0
[DEBUG] main.c:66: Next time = 20:57:01
[DEBUG] main.c:24: Current time = 20:57:03
有趣的是,我的想法也来了。而且我做了一个测试,只在最初开始时读取系统时间,然后继续增加持续值 - 它具有相同的副作用。要再试一次,也许我错过了一些东西,但恐怕它不是罪魁祸首。 –
带持久存储的Redid版本,并且这次它工作。在之前的尝试中,一定会搞砸了一些东西。谢谢你让我再试一次。 –