android DiskLruCache 实现

标签 android caching bitmap

我在这个实现中使用 JakeWharton 的 DiskLruCache:Using DiskLruCache in android 4.0 does not provide for openCache method

我有两个问题: 我仍然需要在单独的线程中执行这些操作,还是 JakeWharton 在他的类里面处理这些操作?我简要地阅读了他的类(class),他唯一一次在单独的线程上执行操作是为了驱逐。因此,例如,我应该在单独的线程中调用 SimpleDiskLruCache(...) 吗?

此外,磁盘缓存的合适大小是多少?我知道这是一个开放式的主观问题,但我很想知道其他人使用什么来缓存位图。我假设这个数字应该以字节为单位指定?

最佳答案

  1. API 的签名提示您应该从缓存中读/写,就好像它是磁盘的接口(interface)一样。因此,为了更直接地回答您的问题 - 是的,您应该在与主循环器分开的线程中调用 get() 和 put()。

  2. 始终对用户抱有同情心,切勿超出您的需要。合适的大小取决于您的应用程序的性质。您是在缓存大量小位图还是少量大图像?图像多久改变一次?您是否计划在使用磁盘缓存的同时使用内存缓存?思考这些问题将帮助您得出合适的规范,从而插入您做出决定。或者,您可以从一个小数字(可能是 4mb)开始,并使用一些日志记录和/或指标来衡量缓存未命中的数量并从那里进行调整。

  3. 最后,您应该指定字节数。例如

    DISK_CACHE_SIZE = 1024 * 1024 * 16;//16mb 字节

关于android DiskLruCache 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22733741/

相关文章:

android - 比较位图对象后,如何通过单击按钮连续获取下一个位图对象?

java - 如何设置推送通知的图标

android - 在 Android Studio 中运行代码覆盖时,类名标记为 'not covered'

java - 桌面 webkit 相当于 Android 的 addJavascriptInterface()?

java - 在 Android 中使用 POI 创建 Excel 文档后立即打开它们

c - CLFLUSH() 的问题?

java - 无法在 Java 中使用 cachingHttpClient 缓存 HttpResponse?

javascript - 超过 localStorage 配额(localStorage 大小!= 文件下载大小)& 如何检查 localStorage 大小

c++ - 用于显示位图和处理按钮按下的简单框架

java - 如何将位图压缩为较小尺寸的图像(保持纵横比)