2014-08-29 19 views
6

Cosa succede se si aggiunge un allarme ma si imposta la data iniziale su una data passata?Allarme impostazione Android a una data passata

Viene eseguito immediatamente o inserito nella coda e mai eseguito?

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startDate, repeatingValue, alarmIntent); 
+3

prova te stesso e testalo molto semplice :) – MilapTank

+0

usa Usa 'setInexactRepeating' invece di' setRepeating' .. –

risposta

5

Se la data è passata, l'allarme si attiva immediatamente. Tuttavia si può provare ad usare setInexactRepeating invece di setRepeating:

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startDate, setInexactRepeating , alarmIntent); 

Dal setInexactRepeating() docs:

Schedule un allarme di ripetizione che ha requisiti di tempo di innesco inesatte; ad esempio, un allarme che si ripete ogni ora, ma non necessariamente a la parte superiore di ogni ora.

0

penso che l'allarme è impostato solo per ore (almeno attraverso l'interfaccia utente di Android), non per un giorno particolare, in questo modo si inizierà l'esatto hour:minute impostato.

7

Da documentation, se l'ora di inizio è nel passato, l'allarme verrà attivato immediatamente.

0

Come posso concludere dalla mia precedente esperienza con AlarmManager. La data che si trova in passato attiverà immediatamente l'allarme.

1

In realtà AlarmManager funziona con l'ora corrente. Quindi, quando si sarà impostare l'allarme data passata poi AlarmManager eseguirà

public void onReceive(Context context, Intent intent) 
{ 
} 

metodo.

0

Per quanto posso dire, AlarmManager.set verrà eseguito ora quando l'ora è impostata su un tempo passato, la documentazione dice tanto. Questa frase manca per AlarmManager.setInexactRepeating, questo allarme non si attiva quando è impostato per un tempo passato, si attiverà all'intervallo successivo, a partire dall'ora specificata.

0

AlarmManager.set e AlarmManager.setInexactRepeating stanno entrambi chiamando setImpl, con il triggertime passato come parametro (selezionato in sorgenti Android 7.1.2). -> non c'è differenza in entrambi i metodi, se il triggertime è nel passato.