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
Più o meno io la imposterei cosi.
Spero di esserti stato d'aiuto.