Cómo obtener el tamaño exacto del directorio de caché: android
NECESIDAD: Simplemente intento obtener el tamaño de caché ocupado de cada aplicación que está instalada en mi teléfono.
MI ACERCAMIENTO:
- ¿Cómo eliminar la caché de otras aplicaciones de nuestra aplicación Android?
- Práctica recomendada para el almacenamiento en caché de archivos en Android
- ¿Cuándo borrar el directorio caché de Android?
- La aplicación se bloquea cuando la aplicación se reanuda durante mucho tiempo
- ¿Dónde está la carpeta caché de Universal ImageLoader?
PackageManager packageManager = getPackageManager(); List<ApplicationInfo> packages = packageManager.getInstalledApplications(PackageManager.GET_META_DATA); for (ApplicationInfo packageInfo : packages) { try { Context mContext = createPackageContext(packageInfo.packageName, CONTEXT_IGNORE_SECURITY); File cacheDirectory = mContext.getCacheDir(); if(cacheDirectory==null) { cacheArrayList.add("0"); } else { cacheArrayList.add(String.valueOf(cacheDirectory.length()/1024)); } } catch (NameNotFoundException e) { e.printStackTrace(); } }
RESULT: Si el directorio es nulo, devuelve 0 (como condición). Pero si el directorio ya existe 4 Kb siempre. Comprobé el caché de mis aplicaciones siguiendo el proceso:
Configuración: -> Aplicaciones: -> ApplicationName
Pero encontré su 0B allí.
¿Por qué sucede alguien puede explicar? Y ¿Cómo consigo el tamaño exacto del caché?
- Caché persistente de MediaPlayer de Android con ExoPlayer
- Método de llamada en la subclase de imageLoader
- ¿Cómo almacenar en caché y almacenar objetos y establecer una política de expiración en android?
- ¿Cómo puedo aprovechar el botón "Borrar caché" de Android
- Android cómo implementar eficientemente el caché de datos y los eventos de cambio de configuración en fragmentos?
- Android - dibujo de caché - ¿Cuándo es útil?
- SecurityException en Android al llamar al método reflejado
- Almacenamiento del cliente Android Http
Longitud de llamada en un directorio no siempre devuelve el tamaño correcto. Puede intentar iterar sobre la lista de archivos y sumar todos los tamaños de archivo para obtener el tamaño total del directorio.
Me gusta esto:
long size = 0; File[] files = cacheDirectory.listFiles(); for (File f:files) { size = size+f.length(); }
Esto ha sido más exacto para mí:
private void initializeCache() { long size = 0; size += getDirSize(this.getCacheDir()); size += getDirSize(this.getExternalCacheDir()); ((TextView) findViewById(R.id.yourTextView)).setText(readableFileSize(size)); } public long getDirSize(File dir){ long size = 0; for (File file : dir.listFiles()) { if (file != null && file.isDirectory()) { size += getDirSize(file); } else if (file != null && file.isFile()) { size += file.length(); } } return size; } public static String readableFileSize(long size) { if (size <= 0) return "0 Bytes"; final String[] units = new String[]{"Bytes", "kB", "MB", "GB", "TB"}; int digitGroups = (int) (Math.log10(size) / Math.log10(1024)); return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups]; }
Puesto original del código de formato de cadena a bytes
Obtendrá cachesize de esta función
public void clearCache() { //clear memory cache long size = 0; cache.clear(); //clear SD cache File[] files = cacheDir.listFiles(); for (File f:files) { size = size+f.length(); // f.delete(); } }
- ¿Dónde puedo encontrar los recursos extraíbles del sistema android?
- El título de la barra de herramientas (SupportActionBar) cambia al nombre de la aplicación en el cambio de orientación