Je suis un exemple de code pour envoyer une notification de mise à jour toutes les 10 secondes. Le code suit et il est dans un UpdateService
pour un AppWidgetProvider
. Si je mets un Thread.sleep(10*1000);
je peux voir le comportement attendu de ma boucle d'entretien. J'ai évidemment quelque chose de fondamentalement faux qui déclenche immédiatement. Il est censé être un PendingIntent
d'une alarme qui diffusera la mise à jour à mon auditeur.Pourquoi mon gestionnaire d'alarme android se déclenche-t-il instantanément?
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);
Merci à la fois +1 de moi pour la réponse rapide et précise. Sur le prochain problème. Assez ironiquement, j'ai essayé de mettre un deuxième commentaire trop tôt (<15 secondes), donc je reçois une notification de la part de SO. :)) – mobibob
im faire comme ceci 'amAlarm1.setInexactRepeating (AlarmManager.RTC_WAKEUP, 120000, AlarmManager.INTERVAL_DAY, alarm1Pending); l'intention toujours en suspens est tirant immédiatement ?? ' –
@MuhammadBabar: Vous devriez vraiment poster une nouvelle question. Mais pour répondre à votre question de toute façon, vous passez '120000' à triggerAtTime, ce qui correspond à' ven, Jan 1970 09:20:00 02 GMT' – Falmarri