ja skaczę obręcze koryta (dobrze, że nie jest to skomplikowane, oczywiście), aby uniknąć zaczynając dwukrotnie alarm. Podstawowy kod wygląda następująco:Co się stanie, gdy uruchomię alarm dwukrotnie?
AlarmManager mgr=(AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent i=new Intent(this, MyService.class);
PendingIntent pi=PendingIntent.getService(this, 0, i, 0);
mgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), AlarmManager.INTERVAL_FIFTEEN_MINUTES, pi);
Czy to ma znaczenie, czy uruchomiłbym ten kod za każdym razem, gdy uruchomi się moja aplikacja? Nie widzę żadnych złych efektów, gdy dzwonię do tego około 10 razy jako eksperyment typu "overkill", ale nie mogę znaleźć żadnego odniesienia, czy jest to przypadek, czy oczekiwane zachowanie.
Jeśli nie jest szczególnie oczekiwać, że czuje się „złego”. Może mnie to zmusić do późniejszych kłopotów, jeśli zmieni się zachowanie AlarmManager
.
Hmm, dzięki! Widzę z tego pytania, że "Pendingintent" jest rzeczywiście taki sam (jak mówią doktorzy). Ale czy dwukrotne wywołanie 'setInexactRepeating' z tym samym' PendingIntent' również byłoby ... nie powtarzające się? – Nanne
Nie mogę znaleźć żadnego odniesienia, ale obecnie przynajmniej uruchamiam alarm dla tego samego 'PendingIntent', który nie powoduje uruchomienia więcej niż jeden raz. Myślę, że sprawdzę tylko, czy już ustawiłem. O wiele łatwiej w ten sposób. Dzięki – Nanne
Czy istnieje również możliwość, że na wywołanie 'setInexactRepeating' wielokrotnie, timer alarm zostanie zresetowany? Na przykład, jeśli przerwa minęłaby 15 minut i 7 minut, to czy drugie połączenie przestawiłoby czas interwału na 0? – aandis