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:
- Lista de contactos de Android
- Lista de guardar de Android <String>
- Listas ordenadas dentro de un Android TextView
- Lista de reproducción de Youtube mostrada en ListView
- ¿Cómo declarar la lista?
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(); }
- ListVIew en Google Glass
- EditText llama aFocusChanged tres veces en vez de una vez
- ListView cambiar el texto en el elemento de clic
- Lista sin fin de Android
- Tipo de lista para almacenar tipos de datos Multipe
- Java (Android) reordenando una lista de objetos
- Vista de lista personalizada con el problema de la casilla de verificación
- El clic de Listitem no funciona con las casillas de verificación Android
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)