我正在使用ListView来显示与这些图像相关的一些图像和标题。我正在从互联网上获取图像。是否有一种方法可以延迟加载图像,以便在文本显示时,UI不会被阻止,图像在下载时显示?

图像总数不是固定的。


当前回答

我发现滑翔机比毕加索更好。我使用picasso加载了大约32张图片,每张图片的大小约为200-500KB,而且我总是得到OOM。但滑翔机解决了我所有的OOM问题。

其他回答

Novoda还有一个很棒的懒人图像加载库,许多应用程序如Songkick、Podio、SecretDJ和ImageSearch都使用其库。

他们的库托管在Github上,他们还有一个非常活跃的问题跟踪程序。他们的项目似乎也很活跃,在撰写回复时提交了超过300次。

这是安卓系统上的一个常见问题,许多人已经通过多种方式解决了这个问题。在我看来,我见过的最好的解决方案是相对较新的图书馆毕加索。以下是亮点:

开源,但由著名的ActionBarSherlock的杰克·沃顿领导。使用一行代码从网络或应用程序资源异步加载图像自动ListView检测自动磁盘和内存缓存可以执行自定义转换大量可配置选项超简单API经常更新

你必须试试这个通用加载器。我在做了很多关于延迟加载的RnD之后使用了这个。

通用图像加载器

特征

多线程图像加载(异步或同步)ImageLoader配置的广泛定制(线程执行器、下载器、解码器、内存和磁盘缓存、显示图像选项等)每个显示图像调用都有许多自定义选项(存根图像、缓存开关、解码选项、位图处理和显示等)内存和/或磁盘上的图像缓存(设备的文件系统或SD卡)收听加载过程(包括下载进度)

Android 2.0+支持

看看Shutterbug,Applidium的轻量级SDWebImage(iOS上的一个不错的库)到Android的端口。它支持异步缓存,存储失败的URL,很好地处理并发,并包含有用的子类。

也欢迎拉取请求(和错误报告)!

我只想再添加一个很好的示例,XML适配器。由于它被谷歌使用,我也在使用相同的逻辑来避免OutOfMemory错误。

基本上,这个ImageDownloader就是你的答案(因为它涵盖了你的大部分需求)。有些也可以在其中实现。