Как удалить кеш-папку приложения? - PullRequest
12 голосов
/ 30 ноября 2011

Я прочитал документацию Android по кешу (см. Документация по хранению данных ) , но я не понял, как очистить всю папку.

Так как же я могу удалить кеш-папку моего приложения?Он находится по этому пути:

/ Android / data / de.stepforward / cache /

Ответы [ 4 ]

27 голосов
/ 12 мая 2012

Поместите этот код в onDestroy (), чтобы очистить кеш приложения:

void onDestroy() { super.onDestroy();

    try {
        trimCache(this);
       // Toast.makeText(this,"onDestroy " ,Toast.LENGTH_LONG).show();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

public static void trimCache(Context context) {
    try {
       File dir = context.getCacheDir();
       if (dir != null && dir.isDirectory()) {
          deleteDir(dir);
       }
    } catch (Exception e) {
       // TODO: handle exception
    }
 }

 public static boolean deleteDir(File dir) {
    if (dir != null && dir.isDirectory()) {
       String[] children = dir.list();
       for (int i = 0; i < children.length; i++) {
          boolean success = deleteDir(new File(dir, children[i]));
          if (!success) {
             return false;
          }
       }
    }

    // The directory is now empty so delete it
    return dir.delete();
 }
11 голосов
/ 30 ноября 2011

Вы можете использовать код, указанный здесь:

https://stackoverflow.com/a/7600257/327011

File cacheDir = context.getCacheDir();

File[] files = cacheDir.listFiles();

if (files != null) {
    for (File file : files)
       file.delete();
}
3 голосов
/ 18 августа 2015

Вместо того, чтобы использовать свои собственные служебные методы, вы можете рассмотреть возможность использования библиотеки Apache commons FileUtils.Он содержит множество полезных методов манипулирования файлами и делает такие операции очень тривиальными.

Вот JavaDocs

А вот пример:

try {
    FileUtils.deleteDirectory(context.getCacheDir());
} catch (IOException e) {
    Log.e(LOGTAG,"Error deleting cache dir", e);
}

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

0 голосов
/ 30 ноября 2011

Из документации:

Сохранение файлов кэша

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

Когда на устройстве недостаточно внутренней памяти, Android может удалить эти файлы кэша, чтобы восстановить пространство.Однако вы не должны полагаться на систему, чтобы очистить эти файлы для вас.Вы всегда должны поддерживать файлы кэша самостоятельно и не выходить за разумные пределы, например, 1 МБ.Когда пользователь удаляет ваше приложение, эти файлы удаляются.

Создайте метод для обхода папки и удаления их, если это то, что вы хотите сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...