Borrar la caché de la aplicación al salir en Android

Lo que quiero hacer es limpiar la memoria caché de la aplicación al salir de la aplicación.

esta tarea la puedo hacer manualmente siguiendo estos pasos.

Administrar aplicaciones -> “Mi aplicación” -> Borrar caché >>

pero quiero hacer esta tarea progtwigndo al salir de la aplicación … por favor, ayúdenme chicos …

Gracias por adelantado..

Prueba este –

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(); } } 

Consulte estos enlaces -

  • how-to-clear-data-cache-of-the-application-through-code

Para borrar los datos de la aplicación, intente de esta manera. Creo que te ayuda.

 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 && 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(); } 

Solo una aclaración, las respuestas funcionan correctamente, excepto que tiene que pasar el contexto de la aplicación a trimCache en lugar del contexto de la actividad (para evitar la pérdida de memoria), ya que trimCache es un método estático.

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

Sin embargo, de lo contrario, puede hacer que trimCache no sea estático y no sea necesario pasar ningún contexto.

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