我寫了一個非常基本的應用程序「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版本,並且這次它工作。在之前的嘗試中,一定會搞砸了一些東西。謝謝你讓我再試一次。 –