2010-08-07 6 views
0

J'essaie de créer des intentions qui seront définies en utilisant alarmmanager. Actuellement, je peux le faire avec une intention, ajouter des données supplémentaires (chaînes, mais je les envoie comme une chaîne avec un séparateur), et tout fonctionne bien et s'éteint au bon moment. Cependant, quand j'essaye d'envoyer plusieurs intentions comme ceci, elles sont écrasées et une seule part au bon moment. Comment puis-je structurer mes intentions afin qu'elles apparaissent différentes de l'alarmmanager (je pense qu'elles sont supprimées quand filterIntent() est exécuté). Longue histoire short-putExtra() rend toutes les intentions toujours les mêmes ... comment puis-je les faire paraître différents afin qu'ils ne soient pas supprimés (et garder une trace d'eux au cas où je veux supprimer un spécifique)android intentions alarmmanager

Répondre

0

Voici comment j'ai planifié des mises à jour pour mes widgets. Chacun peut être unique car il possède un identifiant unique.

Intent widgetUpdate = new Intent(); 
widgetUpdate.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); 
widgetUpdate.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] { appWidgetId }); 
widgetUpdate.putExtra(EXTRA_POSITION,0); 
widgetUpdate.putExtra(EXTRA_URL, URL); 
// make this pending intent unique by adding a scheme to it 
widgetUpdate.setData(Uri.withAppendedPath(Uri.parse(URI_SCHEME + "://widget/id/"), String.valueOf(appWidgetId))); 
PendingIntent newPending = PendingIntent.getBroadcast(context, 0, widgetUpdate, PendingIntent.FLAG_UPDATE_CURRENT); 
// schedule the updating 
AlarmManager alarms = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
alarms.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), updateRateSeconds * 1000, newPending); 
+0

Et comment récupérez-vous les données? –

0

Selon les docs, AlarmManager vérifie si deux Intent s sont équivalent en utilisant filterEquals(). Consultez les documents pour filterEquals() pour voir comment il décide si deux Intent s sont équivalents. Aussi, la solution de chris324 est assez bonne.

Questions connexes