应用缓存是开发过程中临时存储的文件(如图片、网络响应数据等),系统或应用可随时删除,清理缓存不会影响应用核心功能。
// 获取缓存目录 File cacheDir = context.getCacheDir(); // 删除缓存目录下所有文件 deleteDir(cacheDir); // 递归删除文件夹内所有文件的工具方法 private static boolean deleteDir(File dir) { if (dir != null && dir.isDirectory()) { File[] children = dir.listFiles(); if (children != null) { for (File file : children) { boolean success = file.delete(); // 删除文件 if (!success) return false; } } } return dir != null && dir.delete(); // 最后删除空文件夹 }
场景 | 说明 |
---|---|
Android 11+ 分区存储 | 无需特殊处理,getCacheDir() 仍可正常访问应用私有缓存目录 |
多进程共享缓存 | 通过 Context.MODE_PRIVATE 创建的缓存仅对当前应用可见 |
缓存自动清理 | 系统内存不足时会自动清理缓存,但开发者可在退出前主动清理 |
应用数据包含数据库、SharedPreferences、文件等持久化存储内容,清理后会重置应用状态。
// 删除数据库文件(默认路径:/data/data/包名/databases/) File dbDir = context.getDatabasePath("my_database").getParentFile(); deleteDir(dbDir); // 需递归删除整个 databases 目录
// 清除指定 SharedPreferences 文件 context.getSharedPreferences("my_pref", Context.MODE_PRIVATE).edit().clear().commit(); // 删除整个 SharedPreferences 文件(需知道文件名) File prefFile = new File(context.getFilesDir(), "shared_prefs/my_pref.xml"); prefFile.delete();
// 删除应用安装目录下的文件(如 Log、配置文件) File filesDir = context.getFilesDir(); deleteDir(filesDir);
解答:
解答: