In meiner App verwende ich Code wie der folgende, um mehrere Bilder herunterzuladen. Ist es High-Performance, so zu machen oder kann ich die Verbindung irgendwie wiederverwenden?Wiederverwendung von HttpURLConnection
Antwort
Sie werden keinen wirklichen Nutzen aus der Wiederverwendung der HttpURLConnection
bekommen.
Eine Sache, die stark Ihre Anwendung profitieren, wenn Sie einige Zeit mit der Suche in Async Aufgaben, verbringen die es Ihnen erlaubt, Ihren Haupt Code, um die Leistung von Multi-Threaded HTTP-Anforderungen mit Rückrufen zu nutzen.
Siehe: http://www.vogella.com/articles/AndroidPerformance/article.html für ein gutes Beispiel dafür, wie Async Tasks verwendet werden können.
Ein guter Ausgangspunkt ist aber natürlich die Android Developers Blog, wo sie für das Herunterladen eines Bildes von einem Server asynchron ein Beispiel haben, die Ihren Anforderungen gut übereinstimmen. Mit etwas Anpassung können Sie Ihre Anwendung senden mehrere asynchrone Anforderungen gleichzeitig für eine gute Leistung. http://android-developers.blogspot.co.uk/2009/05/painless-threading.html
Der Schlüsselbereich betrachten heißt: von
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);
}
}
Die loadImageFromNetwork
Methode ist, wo der Download stattfindet, und wird völlig asynchron entfernt
Der Artikel Google kann gefunden werden Ihr Haupt-UI-Thread.
Als einfaches Beispiel, könnten Sie Ihre Anwendung ändern, dies zu nennen wie so:
for(int i = 0; i < 100; i++){
new DownloadImageTask().execute("http://www.android.com/image" + i + ".jpg");
}
Obwohl für eine Optimierung, würde ich auf einmal nicht zu 100 Anfragen werfen, vielleicht ein Thread-Warteschlangen-System zu schaffen, die erlaubt vielleicht 4 oder 5 gleichzeitige Verbindungen und hält dann den Rest durch, wenn ein anderer fertig ist, indem ein ArrayList
von ausstehenden Anforderungen zum Ablesen aufrechterhalten wird.
Egal, wie Sie es tun, werden Sie am Ende mehrere Verbindungen zu öffnen, eine, um jedes Bild zu bekommen. So wird ein Bild empfangen. Und es gibt keine Möglichkeit, die HttpURLConnection
sowieso zu ändern. Das könnte in diesem Sinne gut aussehen.
Sie könnten jedoch versuchen, mehrere Bilder gleichzeitig durch Threading zu laden. Es wäre etwas komplex, ein solches Schema zu implementieren, aber durchaus möglich. Es würde den Prozess beschleunigen, indem mehrere Bilder gleichzeitig angefordert werden.
- 1. Wiederverwendung von HttpURLConnection, um die Sitzung am Leben zu halten
- 2. Wiederverwendung von Makrovariablen
- 3. Wiederverwendung von NSpec-Spezifikationen
- 4. Wiederverwendung von Komponenten
- 5. Wiederverwendung von DataTemplate
- 6. Wiederverwendung von IndexSearcher
- 7. Silverlight - Wiederverwendung von Komponenten
- 8. Wiederverwendung von Dateideskriptoren verhindern
- 9. Wiederverwendung von Switch-Anweisungslogik
- 10. Wiederverwendung von DataTemplates
- 11. Get Header von HttpURLConnection Objekt
- 12. mehrere Anfragen von einem HttpURLConnection
- 13. Wie kann ich HttpUrlConnection wiederverwenden?
- 14. HttpURLConnection java.io.FileNotFoundException
- 15. Wiederverwendung von Code, Einfädeln Klasse
- 16. Wiederverwendung von Ereignishandlern in C#
- 17. ASP.NET MVC - Wiederverwendung von Aktionsverhalten
- 18. Wiederverwendung von ausgewählten Abfrageergebnis oracle
- 19. Wiederverwendung von Controller-Funktion + Erweiterung
- 20. Android HttpURLConnection: Gzip-Komprimierung
- 21. Wiederverwendung von Snapshots von Realm-Datenbanken
- 22. Mysql Wiederverwendung von Summen von Unterabfragen
- 23. Wiederverwendung von vim-Instanz von Linux-Terminal
- 24. Java HttpURLConnection Klasse Programm
- 25. Android: HttpURLConnection nicht
- 26. Wie HttpURLConnection Fehlerantwortcode
- 27. HttpURLConnection wird gesperrt
- 28. HttpUrlConnection setConnectTimeout funktioniert nicht?
- 29. android - HttpUrlConnection funktioniert nicht
- 30. Wie kann ich HttpURLConnection
Es tut Verbindung Pooling hinter den Kulissen. – EJP