Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android AlarmManager problema con la configuración y restablecimiento de una alarma

Utilizo una alarma para buscar datos del servidor. Me gusta darle al usuario la opción de iniciar y detener la alarma. Esto significa que tengo que comprobar y ver si la alarma ya está configurada. Encontré algún código que me dice si la alarma ya está configurada:

Intent I = new Intent(getApplicationContext(),AlarmReceiver.class); PendingIntent P = PendingIntent.getBroadcast(getApplicationContext(), 0, I, PendingIntent.FLAG_NO_CREATE); found = (P!=null); 

Si la alarma ya está fijada la cancelo pero si no está fijada entonces la fije (como una palanca)

El problema es que esto funciona sólo una vez. La primera vez que el código anterior para verificar las alarmas existentes volverá nulo indicando que no hay alarma, pero después de cancelar la alarma una vez que devuelve un puntero a algo, pero la alarma no se está ejecutando.

Aquí está el código para configurar la alarma

 am = (AlarmManager) getSystemService(getApplicationContext().ALARM_SERVICE); Intent I = new Intent(getApplicationContext(),AlarmReceiver.class); PendingIntent P = PendingIntent.getBroadcast(getApplicationContext(), 0, I, PendingIntent.FLAG_CANCEL_CURRENT); am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 60000, P); 

Y aquí está el código para cancelar una alarma:

 am = (AlarmManager) getSystemService(getApplicationContext().ALARM_SERVICE); Intent I = new Intent(getApplicationContext(),AlarmReceiver.class); PendingIntent P = PendingIntent.getBroadcast(getApplicationContext(), 0, I, PendingIntent.FLAG_CANCEL_CURRENT); am.cancel(P); 

¿Debo restablecer algo después de cancelar una alarma para hacer que sea PendingIntent desaparecer.

  • ¿Cómo funciona AlarmManager.AlarmClockInfo en PendingIntent?
  • Intención de reanudar una actividad previamente detenida (llamada desde una notificación)
  • PendingIntent de la segunda acción sobrescribe la primera acción y el contenidoIntent for Notification
  • Cancelación de una solicitud pendiente
  • ¿Cómo obtener y cancelar una PendingIntent?
  • Intención con el extra antiguo en onCreate () para singleTask Actividad
  • AlarmManager, BroadcastReceiver y el servicio no funciona
  • Crea un nuevo intento pendiente cada vez en Android
  • One Solution collect form web for “Android AlarmManager problema con la configuración y restablecimiento de una alarma”

    Al cancelar el AlarmManager no utilice un PendingIntent con un indicador de FLAG_CANCEL_CURRENT . En su lugar, cancele la PendingIntent explícitamente después de cancelar la alarma:

     am = (AlarmManager) getSystemService(getApplicationContext().ALARM_SERVICE); Intent i = new Intent(getApplicationContext(),AlarmReceiver.class); PendingIntent p = PendingIntent.getBroadcast(getApplicationContext(), 0, i, 0); am.cancel(p); p.cancel(); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.