FileDocCategorySizeDatePackage
KeyStoreLruCache.javaAPI DocAndroid 5.1 API3258Thu Mar 12 22:22:42 GMT 2015com.android.systemui.recents.model

KeyStoreLruCache

public class KeyStoreLruCache extends Object
An LRU cache that internally support querying the keys as well as values. We use this to keep track of the task metadata to determine when to invalidate the cache when tasks have been updated. Generally, this cache will return the last known cache value for the requested task key.

Fields Summary
HashMap
mTaskKeys
android.util.LruCache
mCache
Constructors Summary
public KeyStoreLruCache(int cacheSize)


       
        mCache = new LruCache<Integer, V>(cacheSize) {

            @Override
            protected void entryRemoved(boolean evicted, Integer taskId, V oldV, V newV) {
                mTaskKeys.remove(taskId);
            }
        };
    
Methods Summary
final voidevictAll()
Removes all the entries in the cache.

        mCache.evictAll();
        mTaskKeys.clear();
    
final Vget(Task.TaskKey key)
Gets a specific entry in the cache.

        return mCache.get(key.id);
    
final VgetAndInvalidateIfModified(Task.TaskKey key)
Returns the value only if the Task has not updated since the last time it was in the cache.

        Task.TaskKey lastKey = mTaskKeys.get(key.id);
        if (lastKey != null && (lastKey.lastActiveTime < key.lastActiveTime)) {
            // The task has updated (been made active since the last time it was put into the
            // LRU cache) so invalidate that item in the cache
            remove(key);
            return null;
        }
        // Either the task does not exist in the cache, or the last active time is the same as
        // the key specified, so return what is in the cache
        return mCache.get(key.id);
    
final voidput(Task.TaskKey key, V value)
Puts an entry in the cache for a specific key.

        mCache.put(key.id, value);
        mTaskKeys.put(key.id, key);
    
final voidremove(Task.TaskKey key)
Removes a cache entry for a specific key.

        mCache.remove(key.id);
        mTaskKeys.remove(key.id);
    
final intsize()
Returns the size of the cache.

        return mCache.size();
    
final voidtrimToSize(int cacheSize)
Trims the cache to a specific size

        mCache.resize(cacheSize);