me gustaría lograrlo:notificaciones todos los días a tiempo determinado
Después de la primera calle a la aplicación, el usuario recibe notificaciones, cada día a las 14:00, si cierta condición es verdadera. Si la condición es falsa, no mostramos una notificación este día. La condición se verifica a las 2 p.m., descarga algunos datos de Internet.
Hasta ahora he usado AlarmManager y su método setRepeating() con un intervalo de 24h. AlarmManager activa un Service. En este Servicio, estoy descargando los datos, comprobando las condiciones y si es verdadero, mostrando Notification. Como la descarga puede durar más de 5 segundos, he declarado android:process=":background"
para este Servicio, para ejecutarlo en un proceso separado y no para bloquear mi UI.
Este enfoque tiene dos inconvenientes:
1: Si el usuario abre la aplicación digamos que a las 4 pm (y la condición es verdadera), que va a recibir la notificación de inmediato . De setRepeating() Documentación:
Si se produce el momento en el pasado, la alarma se disparará de inmediato, con un recuento de alarma dependiendo de lo lejos en el pasado el tiempo de disparo es en relación con el intervalo de repetición.
Me gustaría que ese usuario no reciba una notificación este día, solo al día siguiente y así sucesivamente.
2: Me preocupa que mis notificaciones no se muestren después de que el usuario apague el teléfono. De AlarmManager documentación:
alarmas registrados son retenidos mientras el dispositivo está dormido (y opcionalmente puede despertar el dispositivo hacia arriba si se apagan durante ese tiempo), pero se borrará si se apaga y se reinicia.
No sé si es posible hacerlo funcionar todo el tiempo.
Si tiene alguna idea de cómo hacerlo mejor, de nada.
esta es una buena sugerencia, también uso este – slinden77
¡Muchas gracias! Tengo una pregunta, ¿está seguro de que: twopm.set (GregorianCalendar.HOUR, 2) está configurando la hora PM, no AM? Tal vez debería usar twoPm.set (GregorianCalendar.HOUR_OF_DAY, 14)? –
sí, tienes razón – AntonS