Non si ottiene alcun beneficio dal riutilizzo di HttpURLConnection
.
Una cosa che sarà di grande beneficio l'applicazione è se si spende un po 'di tempo guardando Async compiti, che vi permetterà di sfruttare la potenza di multi richieste HTTP filettati con callback al codice principale.
Vedere: http://www.vogella.com/articles/AndroidPerformance/article.html per un buon esempio di come le attività asincrone possono essere utilizzate.
Un buon punto di partenza è, naturalmente, il Android Developers Blog, dove hanno un esempio per scaricare un'immagine da un server in modo asincrono, che soddisferà le vostre esigenze piacevolmente. Con alcuni adattamenti, l'applicazione può inviare contemporaneamente più richieste asincrone per ottenere buone prestazioni.
L'articolo di Google è disponibile all'indirizzo: http://android-developers.blogspot.co.uk/2009/05/painless-threading.html
L'area chiave da guardare è:
public void onClick(View v) {
new DownloadImageTask().execute("http://example.com/image.png");
}
private class DownloadImageTask extends AsyncTask {
protected Bitmap doInBackground(String... urls) {
return loadImageFromNetwork(urls[0]);
}
protected void onPostExecute(Bitmap result) {
mImageView.setImageBitmap(result);
}
}
Il metodo loadImageFromNetwork
è dove il download avviene, e sarà completamente asincrono da il tuo thread principale dell'interfaccia utente.
Come esempio di base, è possibile modificare l'applicazione per chiamare questo modo:
for(int i = 0; i < 100; i++){
new DownloadImageTask().execute("http://www.android.com/image" + i + ".jpg");
}
Anche se per un'ottimizzazione, non vorrei buttare 100 richieste in una sola volta, forse la creazione di un sistema di coda filettato che consentirà forse 4 o 5 connessioni simultanee e quindi manterrà il resto in arrivo quando un altro termina mantenendo un ArrayList
di richieste in sospeso da leggere.
Fa collegamento pooling dietro le quinte. – EJP