【问题标题】:second HttpURLConnection for image loading optimization第二个 HttpURLConnection 用于图片加载优化
【发布时间】:2014-07-31 11:21:40
【问题描述】:

我读到HttpUrlConnection 在建立连接时会发送 GET 请求。然后我可以检索InputStream 的实例来读取该资源。这是否意味着在建立连接时会下载整个资源文件?

我想要实现的是将ImageView 图像设置为来自网络的远程图像。但是我的想法是在memory-friendly way 中执行此操作,并为BitmapFactory 计算inSampleSize。为了计算该大小 - 我需要 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 请求很慢,因此发送第二个请求是否值得?此外,即使我第一次只读取图像信息而不加载整个图像,我也不知道是否已经下载了整个图像。

如果不值得,我认为唯一的方法是将整个图像复制到内存中,获取它的尺寸,只读取我需要的大小,最后清理内存。女巫会在短时间内消耗大量内存。

【问题讨论】:

标签: android memory-management imageview httprequest bitmapfactory


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多