LruCache 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
保存对有限数量的值的强引用的缓存。
[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
- 继承
- 属性
注解
保存对有限数量的值的强引用的缓存。 每次访问某个值时,它都会移动到队列的头。 将值添加到完整缓存时,该队列末尾的值将被逐出,并且可能符合垃圾回收的条件。
如果缓存的值包含需要显式释放的资源,请重写 #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.LruCache
Java 文档。
此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。
构造函数
LruCache(Int32) | |
LruCache(IntPtr, JniHandleOwnership) |
创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。 |
属性
Class |
返回此 |
Handle |
基础 Android 实例的句柄。 (继承自 Object) |
JniIdentityHashCode |
保存对有限数量的值的强引用的缓存。 (继承自 Object) |
JniPeerMembers |
保存对有限数量的值的强引用的缓存。 |
PeerReference |
保存对有限数量的值的强引用的缓存。 (继承自 Object) |
ThresholdClass |
此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。 |
ThresholdType |
此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。 |
方法
Clone() |
创建并返回此对象的副本。 (继承自 Object) |
Create(Object) |
在缓存未命中后调用,以计算相应键的值。 |
CreateCount() |
返回返回值的次数 |
Dispose() |
保存对有限数量的值的强引用的缓存。 (继承自 Object) |
Dispose(Boolean) |
保存对有限数量的值的强引用的缓存。 (继承自 Object) |
EntryRemoved(Boolean, Object, Object, Object) |
对已逐出或删除的条目调用。 |
Equals(Object) |
指示某个其他对象是否“等于”此对象。 (继承自 Object) |
EvictAll() |
清除缓存,对每个已删除的条目调用 |
EvictionCount() |
返回已逐出的值的数目。 |
Get(Object) |
如果 缓存中存在或可由 创建 |
GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
HitCount() |
返回缓存中已存在的返回值的次数 |
JavaFinalize() |
当垃圾回收确定不再引用对象时,由垃圾回收器对对象调用。 (继承自 Object) |
MaxSize() |
对于不重写 |
MissCount() |
返回返回 null 或需要创建新值的次数 |
Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
Put(Object, Object) |
的 |
PutCount() |
返回调用的次数 |
Remove(Object) |
删除 的 |
Resize(Int32) |
设置缓存的大小。 |
SetHandle(IntPtr, JniHandleOwnership) |
设置 Handle 属性。 (继承自 Object) |
Size() |
对于不重写 |
SizeOf(Object, Object) |
以用户定义的单位返回 和 |
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) |
保存对有限数量的值的强引用的缓存。 |