Sto cercando di implementare un'architettura pulita ( link ) su un'app Android. Ad esempio, supponiamo che tutta l'app esegua il monitoraggio della temperatura della CPU di un utente e visualizzi una media oraria e giornaliera. I dati sono memorizzati sul dispositivo e periodicamente sottoposti a downsampling. I dati sottocampionati vengono caricati su un back-end.
Tutti gli esempi di architettura pulita che ho visto riguardano gli stessi tipi di app, ad es. App che hanno una UI in CRUD, di solito qualcosa nella riga: L'interfaccia utente invia eventi di clic al presentatore, il presenter esegue un caso d'uso, l'interprete recupera i dati da un repository, il presentatore invia i dati all'interfaccia.
La mia app ha praticamente zero interazione con l'utente:
- Un servizio in background misura la temperatura della CPU e la scrive nel
banca dati. - Un processo in background separato esegue il downsampling dei dati e lo scrive al database.
- Ancora un altro processo in background sincronizza i dati downsampled con il backend
- I servizi in background sono programmati per essere eseguiti su un intervallo fisso da un job scheduler
- Tutto ciò che l'utente vede è la sua CPU attuale, le medie e forse notifiche che la sincronizzazione è stata completata con successo.
Come lo strutturerei in termini di architettura pulita? Più in particolare:
- Quali sono i miei casi d'uso?
- I servizi nello stesso livello della vista sarebbero stati?
- Ho bisogno di un presentatore? (Forse per visualizzare notifiche di stato dal servizio, non riesco a vedere nessun altro motivo?)
- Ho bisogno di repository separati per i miei dati ad alta risoluzione e bassa risoluzione?
Mi rendo conto che ci sono molte domande, ma apprezzerei qualsiasi input o suggerimento nella giusta direzione.