我有一个我认为在 Android 应用程序中很常见的场景。我知道已经进行了部分解决该问题的尝试,但直到现在我还没有偶然发现完整的实施。我打算尝试实现这样的组件并在之后开源它,但我需要你的帮助来设计它。
所以基本上我的情况如下:我有一个列表视图,显示从网络加载的图像和每行的文本。我想延迟加载图像,为每个图像设置默认值,并仅在下载图像时将其替换为真实图像。我还想保留图像缓存,避免在短时间内多次下载图像。
到目前为止,我已经找到了几个部分工作的实现,包括:
- Tom van Zummeren 的类似组件的实现有几个众所周知的问题
- Jeremy Wadsack对概念的细化,或多或少是可行的
- 懒惰的drawables源伪造项目。
我还看到了几个关于这个问题的 stackoverflow 问题:1 , 2 , 3
但是,我还有一个要求,这使我的任务更加复杂:我允许我的应用程序的用户将自己与一些图像关联起来。每当用户导航到主屏幕时,我都想加载与用户关联的新图像。从它他应该能够看到他的图像,甚至在它们都被下载之前,在这种情况下,默认占位符应该再次可见(注意跨屏幕转换)。这样的用例是:
- 列出用户的 youtube 视频的应用
- facebook 的应用程序 - 考虑朋友的图像
- 提供支持用户收藏等新闻的应用程序
请注意,我想开始在主屏幕上获取与用户相关的新数据,以提供更好的用户体验。我会将用户相关数据永久保存在本地。
问题
所以我的基本问题是我应该使用什么方法来实现图像下载?我知道 Android 手册说Service
只有在我想执行任务时才使用,即使应用程序没有运行。另一方面,我将在主屏幕上开始图像下载,并在用户导航到新屏幕(Activity
)时将下载链接到 UI 元素 - 与用户相关的列表视图,我不知道如何使用AsyncTask
(不是我有一个非常精确的想法如何使用Service
其中任何一个)。
任何建议将不胜感激,包括链接。