Cómo borrar la caché de Android

Necesito encontrar una manera de borrar los datos que mi aplicación almacena en caché. Básicamente estoy usando la implementación de la lista diferida de Fedor ( carga lenta 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?

EDITAR: 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 borrará la memoria 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 te ayude a llegar más lejos

 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 () (que funciona solo para> = versión KitKat)

para que pueda verificar la versión y todo saldrá bien 🙂 aquí está el código:

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

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

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

Deseche el adaptador anterior y adjunte la vista de lista a una nueva instancia del adaptador (sin embargo, listview 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); } }