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:
- Cómo comprobar si un Array contiene un término específico - Android
- Iconos en un diálogo de lista
- Visibilidad de vista para Android en ListAdapter
- Lista predeterminada de zonas horarias de Android
- Aplicación de presupuesto de Android, botones siguientes y posteriores
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(); }
- Android: ¿Cómo puedo comprobar un elemento en particular en CheckView ListView?
- Android - Inflando ListView
- Cómo actualizar el contenido de una sola fila en mi ListView utilizando OnItemClick
- Android: ¿Cómo poner un archivo de imagen de la tarjeta SD a HashMap con simpleadapter?
- Tipo de lista para almacenar tipos de datos Multipe
- Cómo eliminar elementos de la casilla de verificación de la lista
- ExpandableListView no reacciona y recibe ningún clic
- Lista de Android todas las imágenes disponibles
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); } }
- Instruir la secuencia de comandos Gradle de Android para eliminar apks no alineados y limpiar los archivos de artefacto
- Android: ¿Cómo ajustar el texto por caracteres? (No por palabras)