No creo sea eficiente lo que quieres hacer. Para realizar eso deberás de hacer:
-
Una clase o un método en tu DAO, por ejemplo hayNuevosRegistros
que traiga en una consulta el total de registros: SELECT COUNT(*) FROM tabla
. En la clase, deberás de tener una variable llamada totalRegistros
que almacene el total de registros.
- En un thread debes usar esa DAO para hacer esa consulta todo el tiempo (1). Cuando la consulta traiga un número de registros más elevados que el número que tiene la variable
totalRegistros
se actualiza la variable con el número de registros actuales, acto seguido se hace una consulta para obtener los últimos registros.
Ejemplo
Supongamos que la variable totalRegistros
tiene un valor de 500
. En el thread se itera durante indefinidamente consultando el N° de registros y al cabo de una hora (2) se detecta que hay nuevos registros, en concreto, 510
.
Se actualiza la variable totalRegistros
que ahora vale 510
pero también se crea una variable temporal que guarde la cantidad de registros antiguos, esto para determinar cuántos registros nuevos hay. Acto seguido, se traen los nuevos registros con ayuda del DAO: SELECT FROM tabla ORDER BY id DESC LIMIT (totalRegistros - tempTotalRegistros)
. Esto traerá solo los últimos registros ahorrándote tiempo y CPU en una consulta gigante.
Todo lo anterior, dentro del thread. Aún dentro del thread, se usa alguna referencia a la vista o al controlador de la vista para pasarle la lista o array de nuevos registros. La vista, itera los registros (envueltos en alguna clase de modelo para mayor flexibilidad) y los agrega a la tabla.
Después de esta un poco extensa lectura, fíjate en los puntos 1 y 2. En el punto 1 se itera indefinidamente, lo cual consume recursos del sistem y más y más mientras la cantidad de registros aumente. El punto 2 dice que al cabo de una hora se detectan nuevos registros. Has desperdiciado memoria y CPU durante una hora. Eso es poco eficiente.
Opciones
- Realizar la comprobación de nuevos registros en intervalos medianos de tiempo (15 minutos por ejemplo).
- Poner un botón en la vista llamado Actualizar para que el usuario lo pinche cada vez que quiera comprobar si hay nuevos registros.