您不会真正从重用HttpURLConnection
.
对您的应用程序大有裨益的一件事是,如果您花一些时间研究Async Tasks,这将允许您利用多线程 HTTP 请求的强大功能以及对主代码的回调。
请参阅:
http :
//www.vogella.com/articles/AndroidPerformance/article.html,了解如何使用异步任务的一个很好的示例。
一个很好的起点当然是Android Developers Blog,他们有一个从服务器异步下载图像的示例,这将很好地满足您的要求。通过一些调整,您可以让您的应用程序一次发送多个异步请求以获得良好的性能。
可以在以下位置找到 Google 文章:
http ://android-developers.blogspot.co.uk/2009/05/painless-threading.html
要查看的关键区域是:
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);
}
}
该loadImageFromNetwork
方法是下载发生的地方,并且与您的主 UI 线程完全异步。
作为一个基本示例,您可以修改您的应用程序以像这样调用它:
for(int i = 0; i < 100; i++){
new DownloadImageTask().execute("http://www.android.com/image" + i + ".jpg");
}
虽然为了优化,我不会一次抛出 100 个请求,可能会创建一个线程队列系统,它可能允许 4 或 5 个并发连接,然后通过维护一个ArrayList
待读取的请求来保持其余连接通过,当另一个连接完成时.