Share via


LruCache 类

定义

保存对有限数量的值的强引用的缓存。

[Android.Runtime.Register("android/util/LruCache", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class LruCache : Java.Lang.Object
[<Android.Runtime.Register("android/util/LruCache", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type LruCache = class
    inherit Object
继承
LruCache
属性

注解

保存对有限数量的值的强引用的缓存。 每次访问某个值时,它都会移动到队列的头。 将值添加到完整缓存时,该队列末尾的值将被逐出,并且可能符合垃圾回收的条件。

如果缓存的值包含需要显式释放的资源,请重写 #entryRemoved

如果应按需计算相应密钥的缓存未命中数,请重写 #create。 这简化了调用代码,允许它假定始终返回值,即使存在缓存未命中也是如此。

默认情况下,缓存大小以条目数度量。 重写 #sizeOf 以以不同单位调整缓存大小。 例如,此缓存限制为 4MiB 位图:

{@code
              int cacheSize = 4 * 1024 * 1024; // 4MiB
              LruCache<String, Bitmap> bitmapCache = new LruCache<String, Bitmap>(cacheSize) {
                  protected int sizeOf(String key, Bitmap value) {
                      return value.getByteCount();
                  }
              }}

此类是线程安全的。 通过同步缓存以原子方式执行多个缓存操作:

{@code
              synchronized (cache) {
                if (cache.get(key) == null) {
                    cache.put(key, value);
                }
              }}

此类不允许将 null 用作键或值。 或 的#get#put#remove返回值 null 是明确的:键不在缓存中。

此类出现在 Android 3.1 (Honeycomb MR1) ;它作为 早期版本的 Android 支持包的 一部分提供。

android.util.LruCacheJava 文档。

此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。

构造函数

LruCache(Int32)
LruCache(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

属性

Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
JniIdentityHashCode

保存对有限数量的值的强引用的缓存。

(继承自 Object)
JniPeerMembers

保存对有限数量的值的强引用的缓存。

PeerReference

保存对有限数量的值的强引用的缓存。

(继承自 Object)
ThresholdClass

此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。

ThresholdType

此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。

方法

Clone()

创建并返回此对象的副本。

(继承自 Object)
Create(Object)

在缓存未命中后调用,以计算相应键的值。

CreateCount()

返回返回值的次数 #create(Object)

Dispose()

保存对有限数量的值的强引用的缓存。

(继承自 Object)
Dispose(Boolean)

保存对有限数量的值的强引用的缓存。

(继承自 Object)
EntryRemoved(Boolean, Object, Object, Object)

对已逐出或删除的条目调用。

Equals(Object)

指示某个其他对象是否“等于”此对象。

(继承自 Object)
EvictAll()

清除缓存,对每个已删除的条目调用 #entryRemoved

EvictionCount()

返回已逐出的值的数目。

Get(Object)

如果 缓存中存在或可由 创建#create,则返回 的值key

GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
HitCount()

返回缓存中已存在的返回值的次数 #get

JavaFinalize()

当垃圾回收确定不再引用对象时,由垃圾回收器对对象调用。

(继承自 Object)
MaxSize()

对于不重写 #sizeOf的缓存,这将返回缓存中的最大条目数。

MissCount()

返回返回 null 或需要创建新值的次数 #get

Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
Put(Object, Object)

valuekey缓存。

PutCount()

返回调用的次数 #put

Remove(Object)

删除 的 key 条目(如果存在)。

Resize(Int32)

设置缓存的大小。

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
Size()

对于不重写 #sizeOf的缓存,这将返回缓存中的条目数。

SizeOf(Object, Object)

以用户定义的单位返回 和 value 的条目key大小。

Snapshot()

返回缓存的当前内容的副本,按从最近访问最少到最近访问的顺序排序。

ToArray<T>()

保存对有限数量的值的强引用的缓存。

(继承自 Object)
ToString()

返回一个字符串,其中包含此 对象的简明、可读的说明。

TrimToSize(Int32)

删除最早的条目,直到剩余条目的总数达到或低于请求的大小。

UnregisterFromRuntime()

保存对有限数量的值的强引用的缓存。

(继承自 Object)
Wait()

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>。<>

(继承自 Object)
Wait(Int64)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 Object)
Wait(Int64, Int32)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 Object)

显式接口实现

IJavaPeerable.Disposed()

保存对有限数量的值的强引用的缓存。

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

保存对有限数量的值的强引用的缓存。

(继承自 Object)
IJavaPeerable.Finalized()

保存对有限数量的值的强引用的缓存。

(继承自 Object)
IJavaPeerable.JniManagedPeerState

保存对有限数量的值的强引用的缓存。

(继承自 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

保存对有限数量的值的强引用的缓存。

(继承自 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

保存对有限数量的值的强引用的缓存。

(继承自 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

保存对有限数量的值的强引用的缓存。

(继承自 Object)

扩展方法

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

保存对有限数量的值的强引用的缓存。

GetJniTypeName(IJavaPeerable)

保存对有限数量的值的强引用的缓存。

适用于