Подтвердить что ты не робот

Зачем использовать getCacheDir() на Android

Android может автоматически удалять файлы в CacheDir, когда система становится низкой в ​​памяти. Но документы говорят, что мы не должны полагаться на систему, очищающую этот кеш, и, следовательно, писать дополнительный код для опроса и удаления.

Если это так, зачем выбирать getCacheDir() над getFilesDir()? Оба являются в памяти, и последний предлагает разработчикам больше возможностей с точки зрения того, что нужно очищать и когда.

Спасибо!

4b9b3361

Ответ 1

Android может автоматически удалять файлы в CacheDir, когда система становится низкой в ​​памяти.

Правильно. Сторонние приложения также могут удалять файлы из каталогов приложений. И, как отмечает zapl, пользователь может вручную очистить кэш приложений от настроек.

Но документы говорят, что мы не должны полагаться на систему, очищающую этот кеш, и, следовательно, писать дополнительный код для опроса и удаления.

Также правильно.

Если это так, почему нужно выбрать getCacheDir() через getFileDir()?

Поскольку ОС, сторонние приложения и пользователь могут очистить кеш. Однако только потому, что эти вещи могут очистить кеш, это не значит, что они автоматически очистят кеш, и поэтому вам нужно время от времени тайно вынимать кеш. Точно так же, в то время как ваша мать может очистить вашу комнату, обычно это хорошая идея, если вы сами очищаете свою комнату, если вы не хотите, чтобы ее ударили метлой.

и последний предлагает разработчику больше возможностей с точки зрения очистки и когда...

Нет, это не так. getCacheDir() возвращает объект File. getFilesDir() возвращает объект File. Они эквивалентны с точки зрения "мощности для разработчика с точки зрения того, что нужно очищать и когда".

Ответ 2

getCacheDir() возвращает путь к файлам кэша, тогда как getFilesDir() возвращает путь к файлам, созданным и хранящимся во внутренней памяти вашего приложения. Внутреннее хранилище является постоянным: оно не может быть удалено системой.