Android开发获取缓存,删除缓存

news/2025/2/9 13:21:36/
Android开发获取缓存,删除缓存

app设置中往往有清理缓存的功能。会显示当前缓存时多少,然后可以点击清理缓存

直接上代码:

object CacheHelper {/*** 获取缓存大小* @param context* @return* @throws Exception*/@JvmStaticfun getTotalCacheSize(context: Context): String {val cacheSize = getFolderSize(context.cacheDir)if (Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED) {// cacheSize += getFolderSize(context.getExternalCacheDir());}return getFormatSize(cacheSize.toDouble())}/*** 清除缓存* @param context*/fun clearAllCache(context: Context) {deleteDir(context.cacheDir)if (Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED) {deleteDir(context.externalCacheDir)}}private fun deleteDir(dir: File?): Boolean {if (dir != null && dir.isDirectory) {if (dir.list() == null) {return false}val children = dir.list() ?: return falsefor (i in children.indices) {val success = deleteDir(File(dir, children[i]))if (!success) {return false}}}return dir?.delete() ?: false}// 获取文件大小//Context.getExternalFilesDir() --> SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据//Context.getExternalCacheDir() --> SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据@Throws(Exception::class)fun getFolderSize(file: File): Long {var size: Long = 0try {val fileList = file.listFiles()for (i in fileList.indices) {// 如果下面还有文件size += if (fileList[i].isDirectory) {getFolderSize(fileList[i])} else {fileList[i].length()}}} catch (e: Exception) {e.printStackTrace()}return size}/*** 格式化单位* @param size* @return*/private fun getFormatSize(size: Double): String {val kiloByte = size / 1024if (kiloByte < 1) {// return size + "Byte";return "0K"}val megaByte = kiloByte / 1024if (megaByte < 1) {val result1 = BigDecimal(java.lang.Double.toString(kiloByte))return result1.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "K"}val gigaByte = megaByte / 1024if (gigaByte < 1) {val result2 = BigDecimal(java.lang.Double.toString(megaByte))return result2.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "M"}val teraBytes = gigaByte / 1024if (teraBytes < 1) {val result3 = BigDecimal(java.lang.Double.toString(gigaByte))return result3.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "GB"}val result4 = BigDecimal(teraBytes)return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "TB"}
}

Android开发或者鸿蒙开发需求或者问题的可以私信我,我每天都看私信的


http://www.ppmy.cn/news/1570585.html

相关文章

【CUDA】常量内存

目录 一、认识常量内存 二、使用常量内存实现1D模板 三、与只读缓存比较 一、认识常量内存 常量内存对内核代码而言是只读的&#xff0c;但它对主机而言即是可读的又是可写的。常量内存位于设备的DRAM上&#xff08;和全局内存一样&#xff09;。有一个专用的片上缓存&…

设计模式-生产者消费者模型

阻塞队列&#xff1a; 在介绍生产消费者模型之前&#xff0c;我们先认识一下阻塞队列。 阻塞队列是一种支持阻塞操作的队列&#xff0c;常用于生产者消费者模型&#xff0c;它提供了线程安全的队列操作&#xff0c;并且在队列为空或满时&#xff0c;能够阻塞等待&#xff0c;…

计算机毕业设计Python+Vue.js游戏推荐系统 Steam游戏推荐系统 Django Flask 游 戏可视化 游戏数据分析 游戏大数据 爬虫

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

DeepSeek + IDEA 辅助编程王炸组合

DeepSeek + IDEA 辅助编程王炸组合 2025年的春节可以说是人工智能在中国史上飘红的一段历史时刻,年后上班的第一天,便马不停蹄的尝试新技能。今天的科技在飞速发展,编程领域的人工智能工具犹如雨后春笋般涌现。 其中,DeepSeek 则以其卓越的性能和智能化的功能,迅速在众多…

Spring MVC异常处理:DefaultHandlerExceptionResolver的使用与实例

在开发基于Spring MVC的Web应用程序时&#xff0c;异常处理是一个不可忽视的重要环节。Spring MVC内部在处理请求时可能会抛出多种异常&#xff0c;而这些异常的处理方式直接影响到用户体验和系统的健壮性。今天&#xff0c;我们就来深入探讨一下Spring MVC中默认的异常处理机制…

【蓝桥杯嵌入式】2_LED

全部代码网盘自取 链接&#xff1a;https://pan.baidu.com/s/1PX2NCQxnADxYBQx5CsOgPA?pwd3ii2 提取码&#xff1a;3ii2 1、电路图 74HC573是八位锁存器&#xff0c;当控制端LE脚为高电平时&#xff0c;芯片“导通”&#xff0c;LE为低电平时芯片“截止”即将输出状态“锁存”…

海康威视豆干型网络相机QT的Demo

我用的时候海康官网在arm-linux相关SDK没有给DEMO&#xff0c;只在手册里给了参考代码。自己参考SDK提供的手册作了个QT的DEMO版本。 //main.c #include <QApplication> #include <QWidget> #include <QDebug> #include <QTimer> #include "Hikv…

部署Hadoop高可用集群

注&#xff1a;下述步骤仅供参考&#xff0c;具体指令和操作截图的word版本可见上方本博文免费资源绑定。 1.为虚拟机Hadoop1&#xff0c;2&#xff0c;3拍摄快照以免后续错误操作 2.创建hadoop-HA目录区分之前的集群并将Hadoop安装到该目录下 3.进入/etc目录修改系统环境变量…