Освобождаются ли ресурсы, когда у них нет наблюдателей?

Освобождаются ли ресурсы, когда у них нет наблюдателей? У меня есть сценарий, в котором я хочу кэшировать некоторые изображения, но представления, отображающие их, могут приходить и уходить. Если я использую RemoteImageView, который обрабатывает собственное наблюдение за изображением, введенным в URL, но пользователи переключают представления назад и вперед, вызывая их повторное использование, тогда он теряет правильное изображение.

Было бы разумно создать отдельную службу и EntityCache, чтобы гарантировать, что изображения не сразу удаляются из кэша?

Любые другие предложения будут оценены. Спасибо

1 ответ

Ресурсы живут в памяти до тех пор, пока (1) не произойдет событие нехватки памяти или (2) вы не достигнете максимального размера кэша службы.

В этот момент ссылки на ресурсы становятся слабыми, что приводит к тому, что любые неиспользуемые в настоящее время ресурсы освобождаются. Однако, если у ресурса есть какие-либо наблюдатели, и если владельцы этих наблюдателей не были освобождены, то служба привязывается к ресурсу.

В разделе "Управление памятью" в руководстве пользователя Siesta это подробно обсуждается.

Другие вопросы по тегам