2014-03-29 86 views
1

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

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

此外,什么是磁盘缓存适当的大小?我知道这是一个开放式的主观问题,但我很好奇听到别人用来缓存位图的情况。我假设这个数字应该以字节指定?

回答

3
  1. API的签名,你应该从缓存中读取/写入,如果是到磁盘的接口的提示。所以要更直接地回答你的问题 - 是的,你应该调用get()和put()在与主要活套分开的线程中。

  2. 永远要同情用户,不要超过你的需要。适当的大小将取决于您的应用程序的性质。您是否缓存大量的小型位图或少量大型图像?图像多久改变一次?您是否打算在磁盘缓存旁边使用内存缓存?思考这些问题将有助于您达成一个可以推动您的决定的适当规范。或者,您可以从一小部分(也许是4mb)开始,并使用一些日志记录和/或度量来测量缓存未命中数量并从中调整。

  3. 最后,您应该指定以字节为单位的数字。例如。

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