我有一个Android应用程序,它从我的在线SQL数据库加载大量图像并将其显示给用户。我目前正在处理的方式是当用户按下按钮时加载最初的10张图像,然后我开始向他显示这10张图像,然后在后台运行TimerTask
,每2000ms
执行一次{}加载下10张图像,直到所有图像都已加载。这个问题是,即使我在用户离开幻灯片时调用timer.cancel()
,计时器仍会根据日志不必要地加载一些图像(我认为由于图像被下载,日志会稍微延迟)。此外,我无法在加载图像时执行任何其他HTTP请求。我的目标是为用户提供一种体验,他不需要等待太长时间才能开始查看照片(一次性下载所有这些都是不可能的)但我也不希望后台下载干扰他使用应用程序的任何方式。我的目标是实现Snapchat提供的故事,其中预装了一些图像,允许用户开始查看它们,我假设其余的都是在后台加载的。实现这样的目标的最佳方法是什么?
答案 0 :(得分:1)
您的问题是因为即使您拨打timer.cancel()
您只是取消了计时器,但下载图像任务已经执行,这意味着已经发送了下载图像的网络请求,因此您无法取消这个了。
ImageLoading是Android开发中一个重要而又硬的主题,它调用了许多键,如图像解码和编码,网络请求,内存缓存,磁盘缓存等等,它会耗费你很多时间来解决它。很幸运,有一些优秀的图书馆可以做到这一点,比如 Picasso , Universal-Image-Loader ,你可以直接使用它们,你会得到你想要的。如果你想知道他们的实现,只需看看他们的源代码,您将从中受益。