首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重用HttpURLConnection

重用HttpURLConnection
EN

Stack Overflow用户
提问于 2012-11-23 18:32:11
回答 2查看 5.8K关注 0票数 7

在我的应用程序中,我使用如下代码下载了几张图片。这样做是高性能的吗?或者我能以某种方式重用连接吗?

代码语言:javascript
复制
   for(int i = 0; i < 100; i++){  
    URL url = new URL("http://www.android.com/image" + i + ".jpg");
           HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
           try {
             InputStream in = new BufferedInputStream(urlConnection.getInputStream());
             readStream(in);
            finally {
             urlConnection.disconnect();
           }
         }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-23 18:49:53

您不会真正从重用HttpURLConnection中获得任何好处。

如果您花一些时间研究HTTP ,这将使您的应用程序受益良多,这将允许您通过回调主代码来利用多线程请求的强大功能。

有关如何利用异步任务的一个很好的示例,请参阅:http://www.vogella.com/articles/AndroidPerformance/article.html

当然,Android开发者的博客是一个很好的起点,在那里他们有一个从服务器异步下载图像的示例,它将很好地满足您的需求。通过一些调整,您可以让您的应用程序一次发送多个异步请求,以获得良好的性能。

谷歌的这篇文章可以在http://android-developers.blogspot.co.uk/2009/05/painless-threading.html上找到

需要关注的关键领域是:

代码语言:javascript
复制
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线程完全异步。

作为一个基本的例子,您可以修改您的应用程序来调用它,如下所示:

代码语言:javascript
复制
for(int i = 0; i < 100; i++){  
    new DownloadImageTask().execute("http://www.android.com/image" + i + ".jpg");
}
票数 5
EN

Stack Overflow用户

发布于 2012-11-23 18:35:59

不管你怎么做,你最终都会打开多个连接,一个连接来获取每个图像。这就是接收任何图像的方式。而且无论如何也没有办法改变HttpURLConnection。因此,从这个意义上讲,这看起来很好。

但是,您可以尝试通过线程同时加载多个图像。实现这样的方案会有点复杂,但完全有可能。它将通过同时请求多个图像来加快处理速度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13527237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档