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
- Наследование
- Атрибуты
Комментарии
Кэш, содержащий строгие ссылки на ограниченное количество значений. Каждый раз при доступе к значению оно перемещается в головку очереди. Когда значение добавляется к полному кэшу, значение в конце этой очереди вытесается и может стать подходящим для сборки мусора.
Если кэшированные значения содержат ресурсы, которые необходимо явно освободить, переопределите #entryRemoved
.
Если промах кэша должен вычисляться по запросу для соответствующих ключей, переопределите #create
. Это упрощает вызывающий код, позволяя ему предполагать, что значение всегда будет возвращаться, даже если кэш пропущен.
По умолчанию размер кэша измеряется в количестве записей. Переопределите #sizeOf
размер кэша в разных единицах. Например, этот кэш ограничен 4 МиБ растровых изображений:
{@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 в качестве ключа или значения. Возвращаемое значение NULL из #get
или #put
#remove
является однозначным: ключа не было в кэше.
Этот класс появился в Android 3.1 (Honeycomb MR1); он доступен в составе пакета поддержки Android для более ранних выпусков.
Документация по Java для android.util.LruCache
.
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.
Конструкторы
LruCache(Int32) | |
LruCache(IntPtr, JniHandleOwnership) |
Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения. |
Свойства
Class |
Возвращает класс среды выполнения данного объекта |
Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
JniIdentityHashCode |
Кэш, содержащий строгие ссылки на ограниченное количество значений. (Унаследовано от Object) |
JniPeerMembers |
Кэш, содержащий строгие ссылки на ограниченное количество значений. |
PeerReference |
Кэш, содержащий строгие ссылки на ограниченное количество значений. (Унаследовано от Object) |
ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
ThresholdType |
Этот API поддерживает инфраструктуру Mono для 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() |
Возвращает число возвращаемых |
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() |
Вызывает ожидание текущего потока, пока он не пробудится, как правило, из-за <уведомления><<> или>прерывания или прерывания.>< (Унаследовано от Object) |
Wait(Int64) |
Вызывает ожидание текущего потока, пока он не пробудится, как правило, путем <уведомления><<> или>прерывания или прерывания<> или до истечения определенного количества реального времени. (Унаследовано от Object) |
Wait(Int64, Int32) |
Вызывает ожидание текущего потока, пока он не пробудится, как правило, путем <уведомления><<> или>прерывания или прерывания<> или до истечения определенного количества реального времени. (Унаследовано от 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) |
Кэш, содержащий строгие ссылки на ограниченное количество значений. |