Eventos de alarma Android se retrasan
He desarrollado mi aplicación de alarma Android que necesitan algo cada hora (como 1 pm, 2 pm, 3 pm, 4 pm, 5 pm, 6 pm etc).
Ahora estoy usando alarmManager para que yo consiga un evento wideCast cada hora. Pero a veces el evento se retrasa.
- Firebase disparando demasiadas alarmas
- Cómo crear alarmas persistentes incluso después de reiniciar
- Mostrar diálogo utilizando PendingIntent
- Notificación cada 5 minutos
- ¿Qué contexto recibe BroadcastReceivers al escuchar BOOT_COMPLETED?
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); Log.d(Constants.APP_TAG, "setting beep alarm"); PendingIntent pendingIntent = PendingIntent.getBroadcast( context, 0, new Intent("com.mindedges.beephourly.intent.action.NEW_HOUR"),PendingIntent.FLAG_UPDATE_CURRENT ); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, AlarmSheduleHelper.getImmediateNextHour().getTimeInMillis(),AlarmManager.INTERVAL_HOUR, pendingIntent);
¿Cómo puedo asegurarme de que recibo el evento de difusión exactamente a tiempo.
PS: Se demora en algunos teléfonos específicos / versión de anroid
- ¿Dónde se utiliza el PendingIntent en AlarmManager.AlarmClockInfo?
- Android establece varias alarmas
- Lista de selector de favoritos de Android con la opción predeterminada seleccionada
- Ejecución periódica de la tarea (una vez al día / una vez a la semana)
- Android: Cómo utilizar AlarmManager
- Creación de una notificación en un momento determinado mediante el Administrador de alarmas
- Repetir alarmas cada lunes en Android usig AlarmManager / BroadcastReceiver
- Administrador de alarmas - Programación de varios eventos no repetitivos
One Solution collect form web for “Eventos de alarma Android se retrasan”
En Android 6.0 Marshmallow, Google introdujo el modo "Doze".
Obtenga más información al respecto aquí: Optimización para Doze y aplicación en espera
Y / o mira aquí: Android Marshmallow 6.0: Introducción al modo Doze
En su caso, Google recomienda utilizar setAndAllowWhileIdle
que obligan al teléfono a omitir el modo Doze en su lugar (y setExactAndAllowWhileIdle
lugar de setExact
.)
¡NÓTESE BIEN! Parece que no hay ningún análogo para setRepeating
, así que tienes que programar la próxima repetición "manualmente" con setExactAndAllowWhileIdle
, uno por uno.
Para los dispositivos con Android 4.4 KitKat y superiores – considere utilizar setExact
lugar del set
antiguo, ya que el sistema operativo intenta cambiar las alarmas para minimizar los despertares y el uso de la batería.
Puede haber más puntos a tener en cuenta – por ejemplo, algunos fabricantes de equipos pueden tener sus propias utilidades preinstaladas con el fin de ahorrar batería, pero al menos debe cubrir la población de Android y, presumiblemente, la mayoría de los dispositivos populares.