Sto sviluppando un'applicazione che invia determinate notifiche all'utente come letto da un servizio esterno di sola lettura. L'utente potrebbe ignorare le notifiche e quelle non dovrebbero apparire di nuovo.
Non posso chiedere al server di darmi solo le voci più recenti della mia ultima query perché sono particolarmente interessato a un valore che cambia nel tempo. Devo dare una possibilità alle voci almeno per una settimana. Per questo motivo, le query al servizio potrebbero restituire dati che erano già stati recuperati in precedenza e ho bisogno di filtrare quelli già archiviati. Posso farlo guardando gli ID delle voci ricevute, che sembrano essere degli hash SHA.
Posso salvare quegli ID nelle Preferenze come id - > coppie booleane, o in un database SQLite, ma sicuramente raggiungeranno un certo limite prima o poi.
Inoltre, non ho davvero bisogno di controllare le voci più vecchie. Potrei mettere un limite rigido, diciamo, alle ultime 100 voci e questo dovrebbe essere più che sufficiente.
Come dovrei avvicinarmi allo smaltimento delle vecchie voci per assicurarmi di non superare i limiti?
EDIT: come richiesto, maggiori informazioni sul problema che potrebbe essere utile:
-
La mia query al momento ha il formato "le ultime 1000 voci, dalla più recente alla meno recente, se sono più recenti di 2 settimane". 1000 è un numero così alto che è effettivamente infinito, ai fini della mia applicazione. 2 settimane è un intervallo di tempo così lungo che l'utente non dovrebbe più essere informato su tali informazioni, poiché è altamente improbabile che diventi rilevante per quel momento.
-
Tutte le voci hanno un timestamp "creato". Hanno anche un timestamp "aggiornato", che, se esiste, dovrebbe essere considerato come la data "creata" ai fini della mia domanda. Non mi aspetto che le risposte tengano conto di questo aspetto tecnico, però.
-
Tutte le voci hanno un "coefficiente di importanza", che è il valore che sto monitorando. Notifica all'utente solo le voci con questo coefficiente superiore a una soglia impostata. Poiché questo valore cambia nel tempo, non posso semplicemente ignorare le voci che ho già recuperato in precedenza e che ho trovato non pertinente. Le modifiche in questo valore non influiscono sul campo "aggiornato".
-
Se l'utente chiude la notifica di una voce, la sua notifica dovrebbe essere filtrata la prossima volta che si verifica una query. Confrontare gli ID è sufficiente per questo.