До сих пор я использую SoftReference Кэш для изображений в Android. Этот кеш используется для изображений, отображаемых в ListViews, и должен помогать удерживать изображения элементов в памяти, которые не отображаются на экране, если осталось достаточно памяти.
Проблема в том, что SoftReferences - сбор мусора почти в тот самый момент, когда выпущена последняя жесткая ссылка. Результатом этого является то, что изображение, которое удаляется с экрана, представляет собой сбор мусора в этот момент, и если пользователь прокручивается назад к этой записи в ListView, изображение перезагружается из внутренней памяти телефона, что приводит к сложному ленивому процессу загрузки, в результате чего в частой перерисовке списка и общей плохой производительности.
запрос ошибки для мягкого эталонного поведения утверждает, что это предполагаемое поведение и что вы должны использовать LRU-Cache для кэширования такого рода вещей.
Знай мой вопрос. Кэш LRU займет столько же памяти, сколько я ему позволяю. Но если приложение нуждается в большой памяти, это не освободит память. Как определить, сколько памяти я могу позволить использовать кэш, и есть ли способ уменьшить размер кеша, если ситуация с памятью телефона становится жесткой?
В настоящий момент кеш изображения сохраняется внутри приложения как своего рода глобальное хранилище изображений для всех видов деятельности. Это приведет к тому, что мое приложение будет постоянно использовать всю память кэша изображений, даже если мои действия находятся в фоновом режиме или уничтожены.