Qual è la migliore pratica per fare questo?
Ciò dipenderebbe da cosa "questo" è e da dove viene svolto questo lavoro.
Se "questo" è "lavoro asincrono", si utilizzerà le discussioni in una forma o di moda:
Se le operazioni HTTP stanno guidando un'interfaccia utente, è possibile utilizzare AsyncTask
, in modo da poter aggiornare il UI in modo sicuro da onPostExecute()
Se le operazioni HTTP sono puramente in background, e si vuole fare uno alla volta, utilizzare un IntentService
, che ha il suo thread in background e coda di lavoro
Se le operazioni HTTP sono puramente in background, e si vuole fare uno alla volta, e si sono preoccupati per far sì che il dispositivo dovrebbe stare sveglio mentre tutto questo sta succedendo, prendere in considerazione il mio WakefulIntentService
Se la vostra Le operazioni HTTP sono solo sullo sfondo, ma ritieni di volerle diverse alla volta, tira il tuo Service
che usa uno Executor
con il tuo pool di thread, assicurandoti di spegnere quel servizio quando il lavoro è terminato (come IntentService
fa) e assicurandosi che il dispositivo sia attivo con un (e forse uno WifiLock
)
Ecc.
Se "questo" è "HTTP GET" richieste, l'uso:
HttpUrlConnection
, o
HttpClient
, o
OkHttp (wrapper per quelli con aggiunta benefici), oppure
Retrofit (se le vostre richieste GET sono davvero chiamate al servizio Web), o
Volley (se vi piace il codice wrapper HTTP ad essere privi di documenti, non supportato, ma fuori orbita)
qualsiasi numero di altre terze parti biblioteche involucro
Se "questo" è "coda", utilizzare la classe Queue
, o LinkedBlockingQueue
se si pensa di avere più thread lavorano con esso in una sola volta.
Se "questo" è qualcos'altro, non posso aiutarti, dato che sono stanco di indovinare.
+1 per il commento di Volley. ;-) –
Nota: Volley è ora consigliata come best practice, supportata, documentata e non si applica solo alle richieste GET. – Nilzor
@Nilzor: "best practice raccomandate": fornire collegamenti alle pagine su http://developer.android.com che indicano questo. "supportato, documentato" - si prega di fornire collegamenti ad alcuni siti (ad esempio, GitHub repo) in cui il supporto è in corso e la documentazione risiede. "non si applica solo alle richieste GET" - Non ho mai detto che era * solo * per le richieste 'GET'. La * domanda * riguarda le richieste 'GET'. – CommonsWare