第二个HttpURLConnection用于图像加载优化

时间:2014-07-31 11:21:41

标签: android memory-management imageview httprequest bitmapfactory

我已经读过HttpUrlConnection在建立连接时发送GET请求。此外,我还可以检索InputStream的实例来读取该资源。这是否意味着在建立连接时下载了整个资源文件?

我想要实现的是将ImageView图像设置为来自网络的远程图像。不过,我的想法是在memory-friendly way中执行此操作,并为inSampleSize计算BitmapFactory。为了计算该尺寸,我需要view dimensionsremote image dimensions。可以在此视频中检索远程图像尺寸(基本上它不应该将图像加载到内存中):

        BitmapFactory.Options options = new BitmapFactory.Options ();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeStream (inputStream, null, options);

但是一旦读取inputStream在这种情况下无法重用(或者可以吗?)。另外HttpUrlConnection返回InputStream的同一个实例,这意味着如果我想read an image again(并且只使用inSampleSize选项加载我需要的大小) - 我必须re-connect

我希望能够加载大型图像,但是正如我所听到的那样 - HTTP请求很慢,所以发送第二个请求是否值得?即使我第一次只阅读图像信息而没有加载整个图像,我也不知道整个图像是否已下载。

如果不值得,我认为唯一的方法是将整个图像复制到内存中,获取它的尺寸,只读取我需要的尺寸,最后清理内存。在短时间内,女巫的记忆力会非常昂贵。

1 个答案:

答案 0 :(得分:0)

要从远程网站加载图片,请使用Android Smart Image View .. 它以内存友好的方式从URL加载图像

http://loopj.com/android-smart-image-view/