Un paio di cose da aggiungere alla risposta di Kaleb:
ContentProvider:
Android ha in realtà molti modi per condividere i dati. ContentProvider è un modo per condividere un database tra le applicazioni. Supponiamo che tu abbia 3 client di posta elettronica sul telefono che memorizzano nella cache i dati dal cloud in caso di offline. Ha senso che tu mantenga solo un database offline delle tue e-mail. Lo stesso vale se hai una rubrica, un database sms o un database tweet. E lo stesso vale se vuoi aggiornare tutti quei dati. Vuoi davvero aggiornare quei dati solo una volta dal cloud, non tre volte ogni volta, il che mi porta al prossimo argomento, il SyncAdapter.
SyncAdapter:
Uno SyncManager è abbastanza intelligente per fare tutte le richieste di sincronizzazione in una sola volta, per ridurre al minimo il tempo l'antenna è alimentata, e quindi per risparmiare l'uso della batteria. Inoltre, con l'aiuto di AccountManager, l'utente del telefono può ignorare personalmente le preferenze di sincronizzazione, ma solo se lo sviluppatore ha scelto di utilizzare un SyncAdapter in primo luogo.
Inoltre, un SyncAdapter può essere utilizzato solo con ContentProvider. Pertanto, anche se non desideri condividere i tuoi dati con altre app, dovrai utilizzare un fornitore di contenuti se desideri utilizzare un SyncAdapter.
Detto questo, ContentProvider è molto difficile da implementare per i principianti (anche per gli sviluppatori intermedi). Ti suggerirei di stare lontano da loro per ora. Dovresti usare un ContentProvider, se ce n'è già uno per quello che vuoi fare, ma non ti consiglio di provare a crearne uno tuo.
Pale usate:
Caricatori sono buone. Impara a usarli se vuoi visualizzare i dati da un database locale (o da un ContentProvider). Ti faranno risparmiare tempo. A differenza di SyncAdapter, i caricatori non richiedono che ContentProvider funzioni. Possono accedere direttamente a SQLite.
Servizi:
imparare ad usarli. Ci sono troppe cose da dire su di loro. Un punto importante è che dovresti minimizzare il tempo in cui rimangono in vita usando componenti come AlarmManager o BroadcastRece. Inoltre, dovrai imparare la differenza tra un servizio e un IntentService.
AsyncTask:
AsyncTask è molto spesso necessario in Android per evitare di bloccare il filo principale dell'interfaccia utente. Non pensare che, poiché stai utilizzando un AsyncTask, puoi rinunciare all'uso dei Servizi.
Si noti che molte esercitazioni su Android forniscono solo la quantità minima di codice per dimostrare un concetto, quindi spesso saltano il threading corretto.Nota che puoi avviare il tuo thread manualmente se vuoi, ma AsyncTask fa altre cose per te che lo rendono la scelta ideale per molte situazioni in cui il thread dell'interfaccia utente viene bloccato e si ottiene un errore "Application Non Responding".
Biblioteche:
Ci sono molte buone biblioteche là fuori. Non dirò quali sono quelli buoni. Impara a usare quelli che tutti raccomandano. Queste librerie possono fare molto per te (supponendo che tu sia abbastanza bravo da farle funzionare). C'è un po 'di una curva di apprendimento, ma ne vale la pena. E si occupano di Android ad un livello molto più alto di astrazione, quindi di solito, il threading e molte altre cose sono di solito prese cura di te.
Ci sono molte altre cose che sto sorvolando, o che non ho menzionato affatto, ma come ho detto, penso che la tua domanda sia troppo ampia. E se vuoi davvero maggiori dettagli, dovresti accovacciarti e leggere alcune guide per gli sviluppatori e guardare alcuni dei video di YouTube forniti da Google.
La tua domanda è troppo ampia. Si prega di restringere specificando un caso d'uso effettivo che si desidera implementare. –
Grazie per la risposta @StephanBranczyk. Volevo solo avere un'idea chiara su quali scenari, quale sarebbe l'approccio migliore da usare. Diciamo un'app per mostrare le previsioni del tempo, posso anche usare aynctask per colpire le API o il servizio meteo. Per scopi di caching posso usare sqlite o librerie come il volley. E provider di contenuti per le query e tutti gli altri scopi. Caricatore per aysnc che carica i dati e ascolta l'origine dei dati cambia a cui è associato. Sono solo curioso, come incapsulare tutte queste cose in una soluzione migliore. Perdonami, sono solo confuso riguardo a questo. – Ritesh
Ecco infografica che potrebbero aiutare a capire meglio :) terza opzione sono i servizi: https://raw.githubusercontent.com/stephanenicolas/robospice/master/gfx/RoboSpice-InfoGraphics.png – Kalem