我已经读过HttpUrlConnection
在建立连接时发送GET请求。此外,我还可以检索InputStream
的实例来读取该资源。这是否意味着在建立连接时下载了整个资源文件?
我想要实现的是将ImageView
图像设置为来自网络的远程图像。不过,我的想法是在memory-friendly way
中执行此操作,并为inSampleSize
计算BitmapFactory
。为了计算该尺寸,我需要view dimensions
和remote 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请求很慢,所以发送第二个请求是否值得?即使我第一次只阅读图像信息而没有加载整个图像,我也不知道整个图像是否已下载。
如果不值得,我认为唯一的方法是将整个图像复制到内存中,获取它的尺寸,只读取我需要的尺寸,最后清理内存。在短时间内,女巫的记忆力会非常昂贵。
答案 0 :(得分:0)
要从远程网站加载图片,请使用Android Smart Image View .. 它以内存友好的方式从URL加载图像