2014-03-29 87 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