我能够实现我想要的。
- 1。创建一个类
LruSpannableCache
延伸到
LruCache
并覆盖
sizeOf
方法
@override
protected int sizeOf(Object key, Object value)
{
//The cache size will be measured in kilobytes rather than number of items.
return ((CacheSpannable)value).size() / 1024;
}
- 2。创建了一个对象
CacheSpannable
public class CacheSpannable
{
private int key;
private ISpannable text;
// Getters and Setters for key and text...
public int size()
{
return text.length(); //Can also add the byte length for `key`
}
}
- 3。最后用静态方法创建了一个类
add
和
get
缓存的Spannables
private static LruCache spannableCache;
private static final int cacheSize = Runtime.getRuntime().maxMemory() / 1024 / 6;
public static void addSpannable(int key, CacheSpannable value)
{
if (spannableCache == null) spannableCache = new LruSpannableCache(cacheSize);
if (getSpannable(key) == null)
{
spannableCache.put(key, value);
}
}
public static CacheSpannable getSpannable(int key)
{
if (spannableCache == null) spannableCache = new LruSpannableCache(cacheSize);
return (CacheSpannable)spannableCache.get(key);
}
然后使用它,我只需检查
Spannable
被缓存(缓存)
getSpannable(key) != null
)然后将其设置为
TextView
或者,如果没有,构建它,添加到缓存,然后将其设置为
文本框
.
下一步将是实现磁盘缓存以无限期地持久化可扩展性