【问题标题】:ListView with Lazy loading with downloading image [duplicate]具有延迟加载和下载图像的 ListView [重复]
【发布时间】:2016-05-01 15:54:14
【问题描述】:

我有一个 listview,当我滚动时会在其中下载图像,所以到目前为止我所了解的是只有下载该元素的图像才可见的元素。假设一次只有 7 个元素可见,并且当我滚动以前的视图时 recycled 使用新的一次,那么下载以前视图的 图像 的过程会发生什么它是否也被取消或排队下载新视图的图像的新请求。我正在询问进程排队发生的过程或尚未完成的过程被取消的过程。进程我的意思是在后台下载图片

【问题讨论】:

  • @chintan-rathod 我在问,如果视图被回收,进程是否也会被杀死。
  • 取决于逻辑。否则否。
  • 那么你知道有什么方法可以停止之前的进程,以获取从屏幕中删除或被回收的视图吗?
  • 不..我还没有听说过当视图从列表中消失时如何获取更新..

标签: android listview views lazy-loading android-image


【解决方案1】:

完全取决于您下载和缓存图像的方式。

如果您使用AyncTasks 下载图像并且在滚动时未取消它们,则将下载图像。如果您使用 volley/picasso/glide 之类的库来处理图像,那么它们会根据下载的图像量来取消或缓存图像。

【讨论】:

  • 所以假设我在滚动速度更快并落在第 60 个元素上时使用 AsyncTask,那么我是否必须等到所有图像下载到第 60 个才能看到我的第 60 个元素的图像?
  • 是的。 AsyncTasks 的行为方式是在内部它只会启动有限数量的线程,之后所有请求开始进入队列,然后所有这些请求将按顺序处理。为避免这种情况,请在列表停止滚动之前不要启动异步任务。
  • 那我怎么知道这个列表已经停止滚动了?
  • 通过实现一个 OnScrollListener
  • 是的,我会实施你建议的方法,如果解决了,我会接受。
【解决方案2】:

为什么不使用 GlidePicassoUIL 来延迟加载图像。您可以获取位图并根据需要保存它们,而不是下载。

【讨论】:

  • 是的,我一定会尝试这些库。谢谢
【解决方案3】:

最好把你的代码放在这里,但我认为如果你异步下载图像,你的问题就解决了。您可以使用“dispatch_async()”方法在后台下载图像。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 2013-10-09
    相关资源
    最近更新 更多