Cómo borrar caché de Android

Tengo que encontrar una forma de borrar los datos que mi aplicación almacena en caché. Básicamente, estoy usando la implementación de la lista perezosa de Fedor ( carga de imágenes en ListView ) y quiero borrar la caché automáticamente cuando tengo por ejemplo 100 imágenes cargadas ¿Alguna idea de cómo hacer eso?

EDIT: Código:

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); list=(ListView)findViewById(R.id.list); adapter=new LazyAdapter(this, mStrings); list.setAdapter(adapter); deleteCache(this); adapter.notifyDataSetChanged(); } public static void deleteCache(Context context) { try { File dir = context.getCacheDir(); if (dir != null && dir.isDirectory()) { deleteDir(dir); } } catch (Exception e) {} } 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(); } 

esto eliminará la caché

 public static void deleteCache(Context context) { try { File dir = context.getCacheDir(); if (dir != null && dir.isDirectory()) { deleteDir(dir); } } catch (Exception e) {} } 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(); } 

Espero que esto le ayude a obtener más

 public static void trimCache(Context context) { File dir = context.getCacheDir(); if(dir!= null && dir.isDirectory()){ File[] children = dir.listFiles(); if (children == null) { // Either dir does not exist or is not a directory } else { File temp; for (int i = 0; i < children.length; i++) { temp = children[i]; temp.delete(); } } } } 

puede llamar al servicio del sistema clearApplicationUserData () (funcionando sólo para> = versión de KitKat)

así que usted puede hacer una comprobación para la versión y después todo irá bien 🙂 aquí está el código:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { ((ActivityManager) getActivity().getSystemService(Context.ACTIVITY_SERVICE)) .clearApplicationUserData(); } 

Si utiliza Apache Commons IO, puede realizar esto con una sola línea (excluyendo try-catch):

 try { FileUtils.deleteDirectory(context.getCacheDir()); } catch (IOException e) { // Do some error handling } 

Deseche el adaptador antiguo y adjunte el listview a una nueva instancia del adaptador (sin embargo, la vista de lista perderá la posición de desplazamiento). Ejemplo:

  @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); m_adapter = new MyAdapter(this); final ListView listView = (ListView) getView() .findViewById(R.id.my_list); listView.setAdapter(m_adapter); } } 
  • Obtener nombres de archivo desde un directorio en Android
  • Intenta invocar el método de interfaz 'boolean java.util.List.add (java.lang.Object)' en una referencia de objeto nulo
  • Reordenación de listas como listas de reproducción en el reproductor multimedia
  • ListView cambiar el texto en el elemento de clic
  • Java (Android) reordenando una lista de objetos
  • ¿Cómo poner <Spanned> en list.setAdapter?
  • Evitar que una aplicación se muestre en la lista de aplicaciones recientes en android kitkat 4.4.2
  • ListVIew en Google Glass
  • Android - arrastrar y soltar - reorganizar la lista
  • ¿Cómo puedo crear DialogFragment de ListActivity en Android?
  • Convertir lista a matriz en Java
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.