android DiskLruCache实现

时间:2014-03-29 16:35:27

标签: android caching bitmap

我正在使用JakeWharton的DiskLruCache进行此实现:Using DiskLruCache in android 4.0 does not provide for openCache method

我有两个问题: 我是否仍然需要在一个单独的线程中执行操作,或者JakeWharton是否在他的课程中处理它?我简要地阅读了他的课程,他唯一一次在一个单独的线程上执行操作就是为了驱逐。那么,例如,我应该在一个单独的线程中调用SimpleDiskLruCache(...)吗?

另外,磁盘缓存的大小是多少?我知道这是一个开放式的主观问题,但我很想知道别人用来缓存位图的内容。我假设这个数字应该以字节为单位指定?

1 个答案:

答案 0 :(得分:3)

  1. API的签名暗示您应该从Cache读取/写入,就像它是磁盘接口一样。所以更直接地回答你的问题 - 是的,你应该将get()和put()调用到与主循环器分开的线程中。

  2. 始终对用户表示同情,并且不要超过您的需要。适当的大小取决于您的应用程序的性质。你在缓存大量的小位图,还是少量的大图像?图像经常变化多久?您是否计划在磁盘缓存旁边使用内存缓存?考虑这些问题将有助于您找到可以推动您决策的适当规范。或者,您可以从少量(可能是4mb)开始,并使用一些日志记录和/或指标来衡量缓存未命中数量并从那里进行调整。

  3. 最后,您应该以字节为单位指定数字。 E.g。

    DISK_CACHE_SIZE = 1024 * 1024 * 16; // 16mb in bytes