SQLite
 sql >> Database >  >> RDS >> SQLite

Aggiorna i dati dell'attività dal servizio quando è in pausa

Il modo difficile ma corretto per farlo è creare il tuo ContentProvider personalizzato per la tua app e aggiorna tutti i dati ricevuti dai servizi web e le notifiche push a questo ContentProvider . Quando l'Activity torna in primo piano, si aggiorna con i nuovi dati forniti dal ContentProvider .

È difficile perché creare un ContentProvider personalizzato è un sacco di lavoro. È il corretto modo perché è conforme al comportamento delle applicazioni mobili e all'architettura Android:supponiamo che un utente attivi un servizio web o qualche attività ad alta intensità di calcolo, e poi chiuda l'app; o supponiamo che arrivi una notifica push e richieda l'aggiornamento e la visualizzazione dei dati dell'app. In entrambi i casi, l'Activity dell'app s potrebbe non essere più in primo piano, ma un Service può essere utilizzato per eseguire alcune operazioni non dell'interfaccia utente. Ora al termine di tale operazione, il Service apporta modifiche ai dati tramite il ContentProvider e quando l'utente attiva nuovamente l'app, l'Activity s ottengono i loro nuovi dati da ContentProvider .

Per citare il tutorial ufficiale:

I fornitori di contenuti sono l'interfaccia standard che collega i dati in un processo con il codice in esecuzione in un altro processo.

Come sviluppatore, dovresti sempre presumere che l'utente possa invocare un'app in qualsiasi momento e chiuderla in qualsiasi momento. Indipendentemente dal fatto che sia un'Activity è in primo piano o meno, i dati dell'app devono essere aggiornati e mantenuti correttamente.

Le app di Google utilizzano ContentProvider personalizzato S. Il Gmail app in particolare utilizza il suo ContentProvider per ricevere nuove e-mail quando la connettività di rete è disponibile e visualizzare le e-mail offline. Il Facebook , WhatsApp &Twitter Le app Android utilizzano anche ContentProvider s.