Propiedades duplicadas después de la actualización de la aplicación. ¿Las alarmas sobreviven?
Tengo un error en el que estoy recibiendo intentos duplicados después de una actualización. El cambio que hice fue comenzar a escuchar el MY_PACKAGE_REPLACED y volver a registrar la alarma de abajo, porque asumí que las alarmas se eliminaron cuando se actualizó la aplicación. Sin embargo, estoy, de hecho, obteniendo duplicados de la emisión "TriggerPulse" definida en el siguiente código.
El código siguiente es el único código que está configurando la alarma. Sin embargo, se está llamando desde múltiples lugares, pero en la medida en que puedo recopilar de documentos, este código debe ser idempotent (IntentRequestCodes.PULSE_SERVICE es un entero estático establecido en 1). ¿Es correcto que asuma que este código es idempotente?
- OnActivityResult para PendingIntent
- ¿AlarmManager requiere que PendingIntent sea del tipo BroadcastReceiver?
- Dos botones con PendingIntents - Widget
- Android: ¿cómo abrir una notificación de envío directo que, cuando se cierre, vuelve a la pantalla de inicio?
- La Notificación de Android reinicia la aplicación pero desea continuar
final Context applicationContext = context.getApplicationContext(); Intent intent = new Intent("TriggerPulse"); final int flags = 0; PendingIntent pendingIntent = PendingIntent.getBroadcast(applicationContext, IntentRequestCodes.PULSE_SERVICE, intent, flags); AlarmManager alarmMgr = (AlarmManager)applicationContext.getSystemService(Context.ALARM_SERVICE); final int triggerAtMilliseconds = 0; // run first time immediately alarmMgr.setInexactRepeating( AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtMilliseconds, AlarmManager.INTERVAL_HALF_HOUR, pendingIntent
Si es idempotent en circunstancias normales, ¿significa eso que el pendingIntent que está creando la aplicación actualizada simplemente no se considera una coincidencia de la pendingIntent que está creando la antigua aplicación legacy, provocando que la alarma sea re-programada de todos modos? Si esto es así, puedo resolver fácilmente el problema simplemente no volver a crear la alarma en MY_PACKAGE_REPLACED. Sin embargo, los recursos múltiples por ahí sugieren que uno necesita volver a registrar estos en ese evento, lo que lleva a creer que este fue quizás el caso en Android en algún momento. Si es así, ¿hay una versión de corte de Android en la que se cambió este comportamiento?
- Android: pasar el objeto del widget de recopilación a la actividad
- Múltiples notificaciones para la misma actividad
- Interacción con AsyncTask de la barra de notificación
- ¿El mensaje de GCM se está reemplazando?
- Pasando intención extra a receptor de radiodifusión android
- PendingIntent programado utilizando el tipo AlarmManager.RTC todavía se invoca en el modo de suspensión
- Android: Apertura de actividad incorrecta del widget
- Cómo abortar BroadcastReceiver en android
Trate de cancelar la alarma anterior antes de agregar de nuevo, por lo que incluso si se añadió antes, no habría ningún problema.
PendingIntent alarmIntent = PendingIntent.getBroadcast(CONTEXT, MY_ID, MY_INTENT, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmMgr = (AlarmManager) CONTEXT.getSystemService(Context.ALARM_SERVICE); alarmMgr.cancel(alarmIntent);
- Mostrar texto en el polígono android Google map v2
- ¿Cómo desplazar la vista web horizontalmente dentro de ViewPager?