Sto saltando i cerchi (beh, non è così complicato) per evitare di avviare un allarme due volte. Il codice di base è il seguente:Cosa succede quando avvio una sveglia due volte?
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);
Sarebbe importante se eseguissi effettivamente questo codice ogni volta che viene avviata la mia app? Non vedo alcun effetto negativo quando si chiama questo circa 10 volte come un esperimento di overkill, ma non riesco a trovare alcun riferimento se questa è una coincidenza o un comportamento previsto.
Se non è previsto in particolare, sembra "sbagliato". Potrebbe mettermi nei guai più tardi se il comportamento delle modifiche AlarmManager
.
Hmm, grazie! Da questa domanda vedo che il 'Pendenteintent' è in effetti lo stesso (come dicono i documenti). Ma chiamare anche 'setInexactRepeating' con lo stesso' PendingIntent' due volte sarà ... non ripetibile? – Nanne
Non riesco a trovare alcun riferimento, ma attualmente almeno l'avvio di un allarme per lo stesso 'PendingIntent' non lo fa innescare più di una volta. Penso che mi limiterò a controllare se lo avrò già impostato. Molto più facile in questo modo. Grazie – Nanne
C'è anche la possibilità che richiamando 'setInexactRepeating' più volte, il timer della sveglia venga resettato? Come se l'intervallo fosse stato di 15 minuti e 7 minuti fossero passati, allora una seconda chiamata avrebbe azzerato l'intervallo a 0? – aandis