gpt4 book ai didi

java - 当 View 在 ListView 中变为回收时,如何知道何时取消异步任务

转载 作者:行者123 更新时间:2023-11-30 11:11:29 25 4
gpt4 key购买 nike

在 ListView 中, View 被回收,因此需要取消异步任务(如果它被调用)。您可以通过调用:cancel(true);

但是我怎么知道 View 何时被回收,因此我们需要取消它的异步线程?

最佳答案

您必须为每个要下载的 imageview 设置一个标签,例如,如果您要下载位置 10 的 imageview 然后在 中设置一个标签>imageview 的值为“10”,asynctask 的对象负责下载该 url。现在每次你得到一个新的 imageview(getview 将它传递给你)检查标签中存储的位置,如果它与 getview 中的位置值相同> 这意味着标签内的 asynctask 正在下载正确的 url 我们都很高兴,但是如果 imageview 中的存储位置与getview position不同,取消存储的asynctask,新建一个,并将这个新的position值存储在imageview的标签中。在这种情况下,您还必须将 imageview 引用作为 weakreference 存储在 asynctask 中,这样当下载过程完成时,您必须设置图像到 imageview。这称为 延迟加载。为了从互联网上下载更少的图像,将您的图像存储在 LRUCache 中,因此对于每个新请求,首先检查缓存,然后创建新的 asynctask

关于java - 当 View 在 ListView 中变为回收时,如何知道何时取消异步任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27406713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com