У меня есть приложение, основанное на удаленных изображениях. Они обычно отображаются вместе с некоторыми данными в ListView. Многие из этих изображений являются новыми, и многие старые никогда не будут видны снова.
В настоящее время я храню все эти изображения на SD-карте в пользовательском каталоге кэша (приложение Magnatune от ala evancharlton).
Я заметил, что примерно через 10 дней каталог составляет ~ 30 МБ. Это намного больше, чем я ожидал, и это наводит меня на мысль, что мне нужно найти хорошее решение для очистки старых файлов ... и я просто не могу придумать хорошего. Может быть, вы можете помочь. Вот те идеи, которые у меня были:
Удалить старые файлы. Когда приложение запустится, запустите фоновый поток и удалите все файлы старше X дней. Это создает проблему, хотя, если пользователь активно использует приложение, это может привести к замедлению работы устройства при удалении сотен файлов.
После создания файлов на SD-карте позвоните new
File("/path/to/file").deleteOnExit();
. Это приведет к удалению всех файлов при выходе из виртуальной машины (я даже не знаю, работает ли этот метод на Android). Это приемлемо, потому что, хотя файлы должны быть кэшированы для сеанса, они не должны кэшироваться для следующего сеанса. Похоже, что это также замедлит работу устройства, если при выходе из виртуальной машины будет удалено много файлов.
Удалить старые файлы, до максимального количества файлов. То же, что № 1, но одновременно удаляется только N файлов. Мне не очень нравится эта идея, и если пользователь был очень активным, он никогда не сможет наверстать упущенное и поддерживать каталог кэша в чистоте.
Это все, что у меня есть. Любые предложения будут оценены.