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)

  • Cómo programar mi aplicación para Android para que haga algo cada hora
  • ¿Cómo cancelar esta alarma de repetición?
  • ¿Cómo puedo pasar los datos de un BroadcastReceiver a una actividad iniciada?
  • ¿Cómo configurar la alarma cuando el móvil ha estado inactivo usando android?
  • AlarmClock para principiantes - Android
  • Cómo comprobar si la alarma está configurada
  • 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.

  • Android: Cómo utilizar AlarmManager
  • Notificaciones en horario específico cada día android
  • Cómo programar mi aplicación para Android para que haga algo cada hora
  • AlarmManager - ¿Cómo repetir una alarma en la parte superior de cada hora?
  • Cómo detener una alarma en android
  • Cómo comprobar si la alarma está configurada
  • 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.