¿Cómo puedo ejecutar el trabajo en segundo plano como alarma en los últimos teléfonos Android?

Tengo alguna tarea como recordatorio de medicina. El horario de recordatorio diario se almacena en la base de datos SQLite. Los recordatorios son todos los días diferentes.

Por ejemplo

21.02.19 - 08:00, 12:00, 19:00

22.02.19 - 08:30, 12:30, 19:30

...

Android mínimo 4.4 (Api 19) Target android 9.0 (Api 28)

Leí sobre WorkManager, JobScheduler, JobIntentService, FirebaseJobDispathcer, Alarm manager. Hay muchas API para hacer eso.

En primer lugar, intenté verificar el tiempo con intervalos cada minuto usando el administrador de alarmas. Pero no funciona correctamente en la última versión de Android. Hay restricciones de fondo, modo Doze y modo de espera. Luego probé JobScheduler pero no funciona en dispositivos con menos de 21 API. Y FirebaseJobDispatcher requirió el servicio de Google Play, no es una buena idea. Finalmente, encuentro WorkManager. Pero en workmanager y jobscheduler tienen un intervalo mínimo de 15 minutos.

¿Cómo puedo hacer un servicio en segundo plano para recordar a los usuarios en una hora exacta específica todos los días? No estoy usando internet, GPS, ubicación. Solo obtenga tiempo de SQLite y recuérdelo en el tiempo exacto.

Respuesta 1

¿Cómo persistiría los nodos raíz de las estructuras de árbol personalizadas de tal manera que pudieran recuperarse con un simple SELECT? Nodo de clase de seudocódigo {Id. Largo; Etiqueta de cadena; Nodo principal; ...

En .NET podemos configurar el correo electrónico de la carpeta de salida en lugar de enviarlos de esta manera. <system.net> <mailSettings> <smtp deliveryMethod = "SpecifiedPickupDirectory"> <...

Entonces, tengo un dispositivo de sistema de bloqueo de tarjeta que se conecta a través del puerto serie RS-232 DB9. Esta es la primera vez que trato con un dispositivo externo usando eso. Entonces leí el manual y dice que el ...

Tenemos una aplicación Java donde antes de todo esto se hacía en la función de ejecución de la aplicación multiproceso. Ahora estamos moviendo algunos códigos a una función separada. Tenemos que hacer algunas variables ...