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

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.mzph.cn/pingmian/69309.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Ollama 在腾讯云服务器环境部署 DeepSeek 大模型实战指南

文章目录 前言Ollama核心特性 实战步骤安装 Ollama验证安装结果部署 DeepSeek 模型拉取模型启动模型 交互体验命令行对话调用 REST API 总结个人简介 前言 近年来&#xff0c;大语言模型&#xff08;LLM&#xff09;的应用逐渐成为技术热点&#xff0c;而 DeepSeek 作为国产开…

DeepSeek R1 简单指南:架构、训练、本地部署和硬件要求

DeepSeek 的 LLM 推理新方法 DeepSeek 推出了一种创新方法&#xff0c;通过强化学习 (RL) 来提高大型语言模型 (LLM) 的推理能力&#xff0c;其最新论文 DeepSeek-R1 对此进行了详细介绍。这项研究代表了我们如何通过纯强化学习来增强 LLM 解决复杂问题的能力&#xff0c;而无…

机器学习 —— 深入剖析线性回归模型

一、线性回归模型简介 线性回归是机器学习中最为基础的模型之一&#xff0c;主要用于解决回归问题&#xff0c;即预测一个连续的数值。其核心思想是构建线性方程&#xff0c;描述自变量&#xff08;特征&#xff09;和因变量&#xff08;目标值&#xff09;之间的关系。简单来…

【现代深度学习技术】深度学习计算 | 读写文件

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…

计算机三级数据库技术考试大纲

文章目录 基本要求&#xff11;&#xff0e;掌握数据库技术的基本概念、原理、方法和技术。&#xff12;&#xff0e;能够使用 &#xff33;&#xff31;&#xff2c; 语言实现数据库操作。&#xff13;&#xff0e; 具备数据库系统安装、配置及数据库管理与维护的基本技能。 T…

退格法记单词(类似甘特图)

退格法记单词&#xff0c;根据记忆次数或熟练程度退格&#xff0c;以示区分&#xff0c;该方法用于短时高频大量记单词&#xff1a; explosion爆炸&#xff0c;激增 mosquito蚊子granary粮仓&#xff0c;谷仓 offhand漫不经心的 transient短暂的slob懒惰而邋遢的…

【AI应用】免费的文本转语音工具:微软 Edge TTS 和 开源版 ChatTTS 对比

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】【AI应用】 我试用了下Edge TTS&#xff0c;感觉还不错&#xff0c;不过它不支持克隆声音&#xff08;比如自己的声音&#xff09; 微软 Edge TTS 和 开源版 ChatTTS 都是免费的 文本转语音&…

深入理解 DeepSeek MOE(Mixture of Experts)

1. 什么是 MOE&#xff1f; MOE&#xff08;Mixture of Experts&#xff0c;专家混合&#xff09;是一种模型架构&#xff0c;旨在通过多个专家&#xff08;Experts&#xff09;模型的协同工作来提高计算效率和模型性能。在 MOE 结构中&#xff0c;不是所有的专家都参与计算&a…

MySQL数据库基础(创建/删除 数据库/表)

一、数据库的操作 1.1 显示当前数据库 语法&#xff1a;show databases&#xff1b; <1>show 是一个关键字&#xff0c;表示要执行的操作类型 <2>databases 是复数&#xff0c;表示显示所有数据库 上面的数据库中&#xff0c;除了java113&#xff0c;其它的数据库…

Git 常用命令汇总

# 推荐一个十分好用的git插件---->GitLens 其实很多命令操作完全界面化了&#xff0c;鼠标点点就可以实现但是命令是必要的&#xff0c;用多了你就知道了 Git 常用命令汇总 1. Git 基础操作 命令作用git init初始化本地仓库git clone <repo-url>克隆远程仓库到本地g…

前端导出pdf,所见即所得

一、推荐方案&#xff1a;html2canvas jsPDF&#xff08;图片式PDF&#xff09; javascript import html2canvas from html2canvas; import jsPDF from jspdf;const exportPDF async (elementId, fileName) > {const element document.getElementById(elementId);// 1.…

【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter2-HTML 中的 JavaScript

二、HTML 中的 JavaScript 将 JavaScript 插入 HTML 的主要方法是使用<script>元素。 <script>元素有下列 8 个属性。 async&#xff1a;可选。表示应该立即开始下载脚本&#xff0c;但不能阻止其他页面动作&#xff0c;比如下载资源或等待其他脚本加载。只对外部…

数据分析系列--⑦RapidMiner模型评价(基于泰坦尼克号案例含数据集)

一、前提 二、模型评估 1.改造⑥ 2.Cross Validation算子说明 2.1Cross Validation 的作用 2.1.1 模型评估 2.1.2 减少过拟合 2.1.3 数据利用 2.2 Cross Validation 的工作原理 2.2.1 数据分割 2.2.2 迭代训练与测试 ​​​​​​​ 2.2.3 结果汇总 ​​​​​​​ …

Deepseek-v3 / Dify api接入飞书机器人go程序

准备工作 开通了接收消息权限的飞书机器人&#xff0c;例如我希望用户跟飞书机器人私聊&#xff0c;就需要开通这个权限&#xff1a;读取用户发给机器人的单聊消息 im:message.p2p_msg:readonly准备好飞书机器人的API key 和Secretdeepseek-v3的api keysecret&#xff1a;http…

电话号码的字母组合(力扣17)

这道题注意两个点。一是根据题目所给的键盘布局进行数字到英文字符串的映射&#xff0c;这一步可以用二维数组实现。二是这道题在递归的时候不需要缩小范围&#xff0c;这与之前写的组合题目有所不同。此题并不是在一个集合中不断递归遍历&#xff0c;而是递归另一个集合&#…

红黑树原理及C语言实现

目录 一、原理 二、操作示例 三、应用场景 四、C语言实现红黑树 五、代码说明 六、红黑树和AVL树对比 一、原理 熟悉红黑树之前&#xff0c;我们需要了解二叉树与二叉查找树概念&#xff0c;参见前述相关文章&#xff1a;二叉查找树BST详解及其C语言实现-CSDN博客 红黑…

DeepSeek V2报告阅读

概况 MoE架构&#xff0c;236B参数&#xff0c;每个token激活参数21B&#xff0c;支持128K上下文。采用了包括多头潜在注意力&#xff08;MLA&#xff09;和DeepSeekMoE在内的创新架构。MLA通过将KV缓存显著压缩成潜在向量来保证高效的推理&#xff0c;而DeepSeekMoE通过稀疏计…

TCP服务器与客户端搭建

一、思维导图 二、给代码添加链表 【server.c】 #include <stdio.h> #include <sys/socket.h> #include <sys/types.h> #include <fcntl.h> #include <arpa/inet.h> #include <unistd.h> #include <stdlib.h> #include <string.…

【自动化测试】使用Python selenium类库模拟手人工操作网页

使用Python selenium类库模拟手人工操作网页 背景准备工作安装Python版本安装selenium类库下载selenium驱动配置本地环境变量 自动化脚本输出页面表单自动化填充相关代码 背景 待操作网页必须使用IE浏览器登录访问用户本地只有edge浏览器&#xff0c;通过edge浏览器IE模式访问…

如何通过Davinci Configurator来新增一个BswM仲裁规则

本文框架 前言1.增加一个Mode Declaration Group2.增加一个Mode Request RPorts3.与操作Port的SWC连线4.新建一个Expression5.新建ActionList6.将表达式新建或加进现有Rule内7.生成BswM及Rte模块代码8.在代码中调用RTE接口前言 在Autosar模式管理系列介绍01-BswM文章中,我们对…