Mostrare feed senza internet

Tommy03

Utente Attivo
6 Giu 2018
614
58
28
21
Vicenza
Salve a tutti, vorrei costruire un'app che lavori con Java e XML, connessa ad un database remoto MySQL tramite API PHP (in modo da poter fare anche un sito web connesso allo stesso database). Il mio dubbio è: app come Instagram, quando non c'è connessione internet, mostrano il messaggio "Impossibile aggiornare il feed" ma intanto fanno anche vedere gli ultimi post, commenti, ecc. che erano stati caricati l'ultima volta in cui si era connessi al WiFi. Leggendo sul web mi pare di aver capito che per far questo bisognerebbe salvare i dati (post, ecc.) anche su un database locale SQLite, in modo da poter visualizzare tutto anche senza internet, e aggiornarlo quando torna internet. La mia domanda è: così facendo, è possibile salvare così tanti dati in locale, senza che l'app venga rallentata?
Grazie
 
Salve a tutti, vorrei costruire un'app che lavori con Java e XML, connessa ad un database remoto MySQL tramite API PHP (in modo da poter fare anche un sito web connesso allo stesso database). Il mio dubbio è: app come Instagram, quando non c'è connessione internet, mostrano il messaggio "Impossibile aggiornare il feed" ma intanto fanno anche vedere gli ultimi post, commenti, ecc. che erano stati caricati l'ultima volta in cui si era connessi al WiFi. Leggendo sul web mi pare di aver capito che per far questo bisognerebbe salvare i dati (post, ecc.) anche su un database locale SQLite, in modo da poter visualizzare tutto anche senza internet, e aggiornarlo quando torna internet. La mia domanda è: così facendo, è possibile salvare così tanti dati in locale, senza che l'app venga rallentata?
Grazie

L'app non viene rallentata se il DB è grande (ovviamente le query devono essere fatte bene).

Per fare quanto dici hai bisogno di:
1) Applicazione Android che fa chiamate HTTP verso un server
2) API REST per gestire queste richieste e ritornare i dati
3) Un DB remoto + Un DB locale per l'applicazione

Poi ti puoi giostrare le funzionalità in questo modo:
Apro applicazione -> MainActivity (che mostra una lista di libri), quindi:

- chiamata HTTP al server che richiede tutti i libri GET /books
- arriva il JSON/XML con i dati, li salvi su DB e mostri una ListView di Libri ... se chiudi l'app e la riapri riparti dal primo punto (se non hai internet? Niente chiamata HTTP e carichi i dati locali)

Click su un libro
- chiamata HTTP al server che richiede tutti i libri GET /books/{bookId}
- arriva il JSON/XML con tutti i dati del singolo libro, li salvi su DB e mostri il dettaglio libro ... se chiudi l'app e la riapri riparti dal primo punto (se non hai internet? Niente chiamata HTTP e carichi i dati locali)

e cosi via....

La domanda fondamentale è... devi gestire anche la creazione di dati?
No...allora quanto detto sopra va bene
Si .... la cosa si fa più complessa perchè hai due casi:
1) Creazione Online
2) Creazione Online Offline

Il primo caso è semplice perchè crei dati solo se hai connessione Internet e quindi in tempo reale sul DB remoto
Il secondo è più complesso perchè devi gestire la sincronizzazione.
Se tu crei n dati offline sul DB locale, quando tornerà internet dovrai sincronizzare i due DB e non è per niente una cosa divertente da fare :D :D :D

Più o meno io la imposterei cosi.
Spero di esserti stato d'aiuto.
 
Grazie mille per la risposta, diciamo che avevo un po' archiviato quel progetto, ma sono sicuro che tra un po' di tempo mi serviranno queste cose che hai detto.

devi gestire anche la creazione di dati?
No...allora quanto detto sopra va bene
Si .... la cosa si fa più complessa perchè hai due casi:
1) Creazione Online
2) Creazione Online Offline
Purtroppo qui la risposta è sì... Quindi prima di iniziare mi dovrò informare bene sulla sincronizzazione.

Comunque grazie mille per questa panoramica, mi è stata molto d'aiuto per capire meglio cosa dovrò fare.
Buona giornata e grazie ancora
 
Grazie mille per la risposta, diciamo che avevo un po' archiviato quel progetto, ma sono sicuro che tra un po' di tempo mi serviranno queste cose che hai detto.


Purtroppo qui la risposta è sì... Quindi prima di iniziare mi dovrò informare bene sulla sincronizzazione.

Comunque grazie mille per questa panoramica, mi è stata molto d'aiuto per capire meglio cosa dovrò fare.
Buona giornata e grazie ancora

Prima di buttarti nella sincronizzazione falla funzionare SOLO se è online.
Per farti male con la sincronizzazione c'è sempre tempo :D :D

Te lo dico per esperienza...mi è capitato di lavorare su un'applicazione che sincronizzava i dati quanto era online ed è stato un bagno di sangue :D

Figurati, buona giornata anche a te
 
Comunque grazie mille per questa panoramica, mi è stata molto d'aiuto per capire meglio cosa dovrò fare.
Buona giornata e grazie ancora
 

Discussioni simili