如果您想在內存上構建某種緩存,請考慮使用帶有SoftReferences的Map。 SoftReferences是一些引用,可能會將數據保留一段時間,但不會阻止垃圾收集。在手機上
內存是稀缺的,所以在記憶藏在心裏可能是不切實際的。在這種情況下,您可能需要將緩存保存在設備的輔助存儲中。
從Google's Collections退房地圖製作工具,它可以讓你方便地構建一個2級緩存。考慮這樣做:
/** Function that attempts to load data from a slower medium */
Function<String, String> loadFunction = new Function<String, String>() {
@Override
public String apply(String key) {
// maybe check out from a slower cache, say hard disk
// if not available, retrieve from the internet
return result;
}
};
/** Thread-safe memory cache. If multiple threads are querying
* data for one SAME key, only one of them will do further work.
* The other threads will wait. */
Map<String, String> memCache = new MapMaker()
.concurrentLevel(4)
.softValues()
.makeComputingMap(loadFunction);
關於緩存設備的輔助存儲,請檢查出Context.getCacheDir()。如果你像我一樣馬虎,就把所有東西放在那裏,希望系統能夠在需要更多空間時爲你清理它們:P
感謝您的第一個人談論清單,我認爲不添加它會導致拋出異常。 – 2011-11-30 23:02:48