tipos studio programacion notificaciones móviles desarrollo curso aplicaciones android service notifications alarmmanager

android - studio - Notificaciones diarias en un momento determinado



programacion android pdf 2018 (1)

1: No estoy muy seguro de haber entendido su pregunta, pero creo que todo lo que tiene que hacer es si ya son más de las 2 p. M. Agregue un día a las 2 p. M .:

GregorianCalendar twopm = new GregorianCalendar(); twopm.set(GregorianCalendar.HOUR_OF_DAY, 14); twopm.set(GregorianCalendar.MINUTE, 0); twopm.set(GregorianCalendar.SECOND, 0); twopm.set(GregorianCalendar.MILLISECOND, 0); if(twopm.before(new GregorianCalendar())){ twopm.add(GregorianCalendar.DAY_OF_MONTH, 1); } alarmManager.setRepeating(type, twopm.getTimeInMillis(), 1000*60*60*24, intent);

2: puede registrar un BroadcastReceiver para arrancar y volver a encender la alarma allí. Eche un vistazo a esto: Android BroadcastReceiver al inicio: siga funcionando cuando la actividad esté en segundo plano.

Me gustaría lograr esto:

Después de encender la aplicación por primera vez, el usuario recibe notificaciones, todos los días a las 2 p.m., si ciertas condiciones son ciertas. 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 utilicé AlarmManager y su método setRepeating () con un intervalo de 24 horas. AlarmManager activa un servicio . En este Servicio, estoy descargando los datos, comprobando las condiciones y si es verdadero, mostrando la Notificación . 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 bloquear mi UI.

Este enfoque tiene dos inconvenientes:

1: si el usuario abre la aplicación, digamos a las 4 p.m. (y la condición es verdadera), recibirá la notificación de inmediato . De la documentación setRepeating ():

Si la hora ocurre en el pasado, la alarma se activará de inmediato, con un conteo de alarmas que dependerá de cuán lejos en el pasado el tiempo de disparo sea relativo al 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 la documentación de AlarmManager :

Las alarmas registradas se conservan mientras el dispositivo está dormido (y opcionalmente pueden reactivar el dispositivo si se apagan durante ese tiempo), pero se borrará si se apaga y se reinicia.

No sé si es posible hacer que funcione todo el tiempo.

Si tienes alguna idea de cómo mejorarla, de nada.