resueltos al escribir esta pregunta, pero publicar en caso de que ayuda a nadie:múltiples llamadas a AlarmManager.setRepeating entregan los mismos valores adicionales PendingIntent Intención /, pero suministran diferentes los
Soy la creación de múltiples alarmas de este tipo, con diferentes valores de id
:
AlarmManager alarms = (AlarmManager)context.getSystemService(
Context.ALARM_SERVICE);
Intent i = new Intent(MyReceiver.ACTION_ALARM); // "com.example.ALARM"
i.putExtra(MyReceiver.EXTRA_ID, id); // "com.example.ID", 2
PendingIntent p = PendingIntent.getBroadcast(context, 0, i, 0);
alarms.setRepeating(AlarmManager.RTC_WAKEUP, nextMillis, 300000, p); // 5 mins
... y que reciben como esto:
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION_ALARM)) {
// It's time to sound/show an alarm
final long id = intent.getLongExtra(EXTRA_ID, -1);
La alarma se entrega a mi receptor de una t los tiempos correctos, pero a menudo con EXTRA_ID
establecido en el valor incorrecto: es un valor que he usado en algún momento, pero no el que quería entregar en ese momento en particular.
Sólo me preguntaba, si una nueva intento con Intención i = nueva intención (contexto, Cls); ¿Tengo este problema de identificación mixta? En mi caso, el Cls es diferente para diferentes Alarmas. Debería estar bien, ¿verdad? – Safecoder
Actualmente no puedo encontrar el lugar exacto que miré antes para ver el punto acerca de los extras, pero sí, con una clase diferente es una Intento completamente diferente, así que mucho esperaría que funcione. –
@ChrisBoyle, muchas gracias. Pero en mi caso, no funciona. Sin embargo, esto funciona: 'intención intención = nueva intención (nulo, Uri.parse (Long.toString (id)), contexto, AlarmActivity.class);'. Tenga en cuenta que puedo usar actividad. –