Как удалить кэш-папку приложения?

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

Итак, как я могу удалить папку кеша моего приложения? Он по этому пути:

/Android/data/de.stepforward/cache/

Ответ 1

Поместите этот код в 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();
 }

Ответ 2

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

fooobar.com/questions/525707/...

File cacheDir = context.getCacheDir();

File[] files = cacheDir.listFiles();

if (files != null) {
    for (File file : files)
       file.delete();
}

Ответ 3

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

Вот JavaDocs

И вот пример:

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

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

Ответ 4

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

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

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

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

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