Очистить кеш приложения при выходе в Android

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

эту задачу я могу сделать вручную с помощью этих шагов.

< Apps --> Manage Apps --> "My App" --> Clear Cache>>

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

Заранее спасибо..

 Gofurs31 окт. 2016 г., 18:06
Возможный дубликатHow to clear cache Android

Ответы на вопрос(3)

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

 @Override
   protected void onDestroy() {
      super.onDestroy();
      try {
         trimCache(getApplicationContext()); //if trimCache is static
      } catch (Exception e) {
        e.printStackTrace();
      }
 }

Однако в противном случае вы можете сделатьtrimCache не статично и нет необходимости передавать любой контекст.

public void trimCache() {
   try {
     File dir = getCacheDir();
     if (dir != null && dir.isDirectory()) {
        deleteDir(dir);
     }
  } catch (Exception e) {
     // TODO: handle exception
  }
}
 31 янв. 2017 г., 13:26
Привет, это очищает БД тоже .. мы можем пропустить это?

пожалуйста, попробуйте этот способ. Я думаю, что это поможет вам.

public void clearApplicationData() 
{
    File cache = getCacheDir();
    File appDir = new File(cache.getParent());
    if (appDir.exists()) {
        String[] children = appDir.list();
        for (String s : children) {
            if (!s.equals("lib")) {
                deleteDir(new File(appDir, s));Log.i("TAG", "**************** File /data/data/APP_PACKAGE/" + s + " DELETED *******************");
            }
        }
    }
}

public static boolean deleteDir(File dir) 
{
    if (dir != null &amp;&amp; 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;
            }
        }
    }
    return dir.delete();
}
 31 янв. 2017 г., 13:26
Привет, это очищает БД тоже .. мы можем пропустить это?
 Arun Joshi11 июн. 2012 г., 11:37
Спасибо за такой замечательный ответ. но меня беспокоит то, что когда я должен вызывать этот метод, потому что у меня много путаницы по поводу времени вызова этого метода
 20 окт. 2013 г., 11:43
В вашем приложении будет действие, при котором пользователь завершает работу (обычно это основное действие), переопределяет OnDestroy () и вызывает приведенный выше код очистки кэша.
Решение Вопроса

import java.io.File;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;

public class HelloWorld extends Activity {

   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle *) {
      super.onCreate(*);
      setContentView(R.layout.main);
   }

   @Override
   protected void onStop(){
      super.onStop();
   }

   //Fires after the OnStop() state
   @Override
   protected void onDestroy() {
      super.onDestroy();
      try {
         trimCache(this);
      } 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();
   }

}

Ссылки на эти ссылки -

how-to-clear-data-cache-of-the-application-through-code
 31 янв. 2017 г., 13:26
Привет, это очищает БД тоже .. мы можем пропустить это?
 23 авг. 2016 г., 22:48
Не удаляйте файлы в основном потоке! Вы должны сделать эти вызовы в другом потоке, чтобы избежать ANR!
 27 сент. 2015 г., 21:25
Ссылка, которую вы разместили, не указывает на что-либо действительное.

Ваш ответ на вопрос