Quiero crear una aplicación de recordatorio. Debería haber una base de datos con una tabla de 'recordatorios activos'. Habría una función que:
Estaba pensando en una forma eficiente de ejecutar esta función y pensé en:
Mi pregunta: ¿Hay una mejor manera de implementar la solución? De los métodos enumerados, ¿diría que una de las formas es más eficiente que la otra?
¡Muchas gracias!
Si sus citas están en la memoria, ordénelas por hora de activación. Si sus citas están en una base de datos, asegúrese de que haya un mecanismo eficiente para acceder a la próxima cita para llegar a su hora.
Luego, utilizando este eficiente mecanismo de acceso ordenado, encuentre la primera cita para despedir. Si ese tiempo ya ha pasado, active su notificación, elimínela de la estructura de datos y repita. Si ese tiempo aún no ha pasado, configure un temporizador para su tiempo programado. Cuando ese temporizador se active, elimine ese evento de la estructura de datos y repita el proceso haciendo que se active el próximo evento y configurando un temporizador para él.
Cada vez que agregue una nueva cita, verifique si la hora de vencimiento es anterior a la que tiene un temporizador. Si es así, suelte el temporizador para el que tenía y configure el temporizador para el nuevo.
Cada vez que se va a eliminar una cita, primero se comprueba si es la siguiente en ser notificada. Si es así, detenga su temporizador y configure el próximo evento.
Es probable que pueda hacer todo esto con cuatro funciones que manejan los cambios del ciclo de vida:
addNewEvent(event) // called when you add a new event to the data fireEvent(event) // called when a timer fires to notify of an event removeEvent(event) // called when an event is being deleted configureNextEvent() // called to configure timer for next event