0

我正在处理 3mb 的图像,问题是当我从滚动中松开手指时,图像在我的情况下是从 sd 卡的缓存中下载的。我也在使用 PauseOnScrollListener,但它并没有解决问题。即使在滚动时我没有查看它,我也希望图像保留在网格上。Universal-Image-Loader 以不同的方式处理它,在不显示时不显示图像,当我暂停并看到特定图像时,它就会再次显示。

options = new DisplayImageOptions.Builder()
            .showStubImage(icon)
            //Because you reuse view for different
            //images you can see a previous image in the view while new image is loading. .resetViewBeforeLoading(true
            .showImageForEmptyUri(R.drawable.ic_empty)
            .showImageOnFail(R.drawable.ic_error)
            .cacheOnDisc(true)
            .cacheInMemory(true)
            .bitmapConfig(Bitmap.Config.RGB_565)
            .build();
4

1 回答 1

1

如果您使用的是 GridView,这是正常行为。

实际上发生的情况是,当您滚动浏览时,不可见或滚动出屏幕的元素被破坏或换句话说无效。原因是内存优化,这是由 android 完成的。

如果您的网格元素中有任何文本视图,当它返回屏幕时加载速度会更快。但是对于图像,ImageLoader 可能需要一些时间才能将图像从缓存中加载到 ImageView 中。在我看来这很正常。

如果您不希望图像被破坏,那么您将遇到 OutOfMemory 异常,这要好得多。

于 2013-09-24T11:12:08.373 回答