【问题标题】:Best practice for managing most used cached images管理最常用的缓存图像的最佳实践
【发布时间】:2015-04-30 13:17:59
【问题描述】:

本着不重新发明自行车的精神,我想知道是否有一种 Android 最佳实践方法(我没有通过谷歌找到,但我可能没有正确表达我的搜索)来保持一定数量的本地为下载的位图分配的存储空间,基于最常用的(而不是 FILO 或 FIFO)算法保留。

所以,我要做的是抓取一张图像(如果它还没有在磁盘上)并将其存储并将其标记为“最近需要的”。下次使用它时,我会再次将其标记为最近需要的。每次我这样做时,我都会检查所有图像,并且任何超过最近实用程序阈值的图像都将被删除。

我的算法还考虑到并非所有图像都是平等的,并且我希望为图像存储分配有限的空间。

我不是在问“怎么做”(因为我知道怎么做)...我问的是在我开始自己的自定义实现之前是否已经有我应该遵循的规定方法。

【问题讨论】:

    标签: android image-caching file-storage


    【解决方案1】:

    我认为你需要LruCahe。您可以使用UIL 和所有可用的caching 机制或使用DiskLruCache 创建自己的机制。我认为大多数库都使用 LRU 作为缓存图像的算法,我不认为它们中的任何一个都使用 LIFO 或 FIFO。

    【讨论】:

    • 完美,这正是我想要的……只是不知道缩写词。
    【解决方案2】:

    我可以推荐用于 Android 的 Picasso 库。每个站点的功能:

    • 在适配器中处理 ImageView 回收和下载取消。
    • 使用最少的内存进行复杂的图像转换。自动
    • 内存和磁盘缓存。

    我不能 100% 确定这是否符合您的要求,但值得一看。

    【讨论】:

    • 谢谢。很难从他们的文档中看出他们采用了哪种缓存策略——对我来说,当新图像进入时,被删除的图像会根据“以前最少使用”被删除,我不知道他们是否正在这样做,或者只是一种先进先出的方法。不过谢谢,看起来是个不错的工具。
    • 根据 API 文档,毕加索提供了一个 LruCache 实现;这篇不错的帖子讨论了 PicassoUIL 的优缺点:stackoverflow.com/questions/19995007/…;在这里你可以找到一个很好的LruCache 示例stackoverflow.com/questions/11623994/…
    • 非常感谢。我将为 mmlooloo 提供的更一般的答案打上绿色复选标记,但我非常感谢了解这个库,所以,我也为你的答案 +1。
    猜你喜欢
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 2015-01-20
    • 2015-05-31
    相关资源
    最近更新 更多