Seguo il codice di esempio per l'invio di una notifica di aggiornamento ogni 10 secondi. Il codice segue ed è in un UpdateService
per un AppWidgetProvider
. Se metto un Thread.sleep(10*1000);
riesco a vedere il comportamento previsto del mio ciclo di manutenzione. Ovviamente ho qualcosa di fondamentalmente sbagliato che si innesca immediatamente. Dovrebbe essere un PendingIntent
di un allarme che trasmetterà l'aggiornamento al mio ascoltatore.Perché il gestore degli allarmi Android si attiva istantaneamente?
long nextUpdate = 10*1000;
Log.d(TAG, "Requesting next update in " + nextUpdate + " msec.");
Intent updateIntent = new Intent(ACTION_UPDATE_ALL);
updateIntent.setClass(this, UpdateService.class);
PendingIntent pendingIntent = PendingIntent.getService(this, 0, updateIntent, 0);
// Schedule alarm, and force the device awake for this update
AlarmManager alarmManager = (AlarmManager)getBaseContext().getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(),
nextUpdate, pendingIntent);
Grazie a entrambi +1 da parte mia per la risposta rapida e accurata. Passiamo al prossimo problema. Abbastanza ironicamente, ho provato a mettere un secondo commento troppo presto (<15 secondi), quindi ricevo una notifica pop-pop da SO. :)) – mobibob
in questo modo 'amAlarm1.setInexactRepeating (AlarmManager.RTC_WAKEUP, 120000, AlarmManager.INTERVAL_DAY, alarm1Pending); l'intento ancora in sospeso viene attivato immediatamente? ' –
@MuhammadBabar: dovresti pubblicare una nuova domanda. Ma per rispondere alla tua domanda comunque, stai passando a '120000' per triggerAtTime, che corrisponde a' Fri, 02 Jan 1970 09:20:00 GMT' – Falmarri