我的Android应用程序有一个ListView
,它在后台从网络中提取一组图像网址,然后将其传递给UI线程。 UI线程然后下载图像并显示它们(我正在使用Picasso
来确保缓存和调整大小。)
我想知道是否应该在后台线程中下载图像,然后只将调整大小的位图传递给UI线程进行显示。此外,当用户在两个场景中滚动屏幕时会发生什么 - 是否会再次从Web检索所有图像?在这种情况下,我无法理解哪个会更快。该应用程序与Facebook安卓应用程序非常相似。
还有一件事 - 我的应用程序每隔5分钟刷新一次,如果列表中有任何新的图像网址,它将从后台线程开始重新启动整个过程。我的想法是,由于早期的图像会缓存,因此不会再次加载它们。只会加载新的网址。这是对的吗?
答案 0 :(得分:0)
所有网络操作都在Android后台运行,Picasso也不例外。滚动列表时,毕加索会检查缓存,如果缓存中没有特定图像,则会下载它。
答案 1 :(得分:0)
UI线程然后下载图像并显示它们(我正在使用Picasso来确保缓存和调整大小。)
Picasso默认情况下不会在主应用程序线程上下载图像。我甚至不确定是否有选择这样做。
我想知道是否应该在后台线程中下载图像,然后只将调整后的位图传递给UI线程进行显示。
毕加索应该为你做这件事。
此外,当用户在两个场景中滚动屏幕时会发生什么 - 是否会再次从网络上检索所有图像?
这取决于图像数量,图像大小,缓存大小等等。 Picasso为您提供了确定其行为方式的选项,从角落中的调试指示器指示图像源(setIndicatorsEnabled(true)
)以获取StatsSnapshot
来告诉您缓存的执行情况({{1} })。