我已經搜索了3天,但沒有在其他地方找到解決方案或類似問題/問題。這裏是處理:AlarmManager觸發PendingIntent太快
觸發在1個小時 - >工作的正確
觸發在2個小時 - >進去1:23
觸發以1天爲 - 在>去的〜11:00
那麼,爲什麼AlarmManager如此不可預測,並且總是太快?或者我做錯了什麼?還有另一種方式,以便它可以正常工作?
這是我在AlarmManager(精簡)註冊我的PendingIntent方式:
AlarmManager alarmManager = (AlarmManager)parent.getSystemService(ALARM_SERVICE);
Intent myIntent = new Intent(parent, UpdateKlasRoostersService.class);
PendingIntent pendingIntent = PendingIntent.getService(parent, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
//Set startdate of PendingIntent so it triggers in 10 minutes
Calendar start = Calendar.getInstance();
start.setTimeInMillis(SystemClock.elapsedRealtime());
start.add(Calendar.MINUTE, 10);
//Set interval of PendingIntent so it triggers every day
Integer interval = 1*24*60*60*1000;
//Cancel any similar instances of this PendingIntent if already scheduled
alarmManager.cancel(pendingIntent);
//Schedule PendingIntent
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, start.getTimeInMillis(), interval, pendingIntent);
//Old way I used to schedule a PendingIntent, didn't seem to work either
//alarmManager.set(AlarmManager.RTC_WAKEUP, start.getTimeInMillis(), pendingIntent);
這將是真棒,如果任何人有一個解決方案。謝謝你的幫助!
更新: 2個小時前,它的工作間隔爲2小時觸發它,但之後它在1:20小時後觸發。它變得非常奇怪。我將使用日誌文件跟蹤觸發器並在明天發佈。
更新: PendingIntent計劃每3小時運行一次。從日誌的第二行,似乎像一個老預定的PendingIntent仍在運行:
[2012-5-3 2:15:42 519] Updating Klasroosters
[2012-5-3 4:15:15 562] Updating Klasroosters
[2012-5-3 5:15:42 749] Updating Klasroosters
[2012-5-3 8:15:42 754] Updating Klasroosters
[2012-5-3 11:15:42 522] Updating Klasroosters
但是,我敢肯定,我取消了預定的PendingIntent的之前,我安排一個新的。並且每個PendingIntent都不以相同的方式重新創建,因此它應該完全相同。如果沒有,這個線程問題不再相關。
我無法重新創建您的問題。你究竟如何改變'開始'提前2小時,也是1天? – Sam
我添加了日誌文件,發現可能舊的PendingIntent仍在運行。 – Wezelkrozum
我也有同樣的問題,你有一個工作解決方案? – david