Я использую Universal Image Loader для отображения изображений в моем приложении в списках просмотров. Я использую UnlimitedDiscCache
, поскольку это самый быстрый механизм кэширования в соответствии с документацией.Универсальный загрузчик изображений - очистить кеш вручную
Однако, я хотел бы очистить кеш диска, когда мое приложение закрыто (например, в onStop()
), но только самые старые кешированные файлы, превышающие заданный лимит, должны быть удалены (например, TotalSizeLimitedDiscCache
).
Я знаю ImageLoader.clearDiscCache()
, но в моем случае это очищает весь кэш, так как я использую UnlimitedDiscCache
раньше ...
Так что я хотел бы иметь самый быстрый механизм кэширования, когда пользователь загружает и прокрутку ListViews и очистить медленный кеш, когда пользователь больше не взаимодействует с приложением.
Любые идеи, как я могу это достичь?
Вы не можете гарантировать, что приложение останавливается при вызове 'onStop()'. Это говорит только о том, что текущая деятельность прекращается. Потери производительности очень минимальны по сравнению с временем, затрачиваемым на реализацию другого механизма кэширования (что может замедлить приложение в любом случае). –
@jeff_bordon У вас есть код, который используется для создания экземпляра ImageLoader? @Androidy Да, вы можете отличить, когда приложение вот-вот закончится, например 'if (isFinishing()) {сделайте что-нибудь}' –
@jeff_bordon, у вас может быть BoB (лучше всего того и другого). См. Источник здесь https://github.com/nostra13/Android-Universal-Image-Loader/blob/master/library/src/com/nostra13/universalimageloader/cache/disc/impl/LimitedAgeDiscCache.java Написание UnlimitedAgeDiskCache будет быть довольно прямолинейным. Все, что вам нужно знать, это дата и разница между временем и потом. Я думаю, что это не уменьшит скорость ListViews, если дело мало. –