Android清除缓存,清除数据
概念:
清除数据、清除缓存的区别
清除数据主要是清除用户配置,比如SharedPreferences,数据库等等,这些数据都是在程序运行过程中保存的用户配置信息,清除数据后,下次进入程序就和第一次进入程序时一样
缓存是程序运行时的临时存储空间,它可以存放从网络下载的临时图片,从用户角度触发清除缓存对用户并没有太大的影响,但是清除缓存后用户再次使用该APP时,由于本地缓存已经被清理,所有的数据需要重新从网络上获取。为了在清除的时候能够正常清除与应用相关的缓存,请将缓存文件存放在getCacheDir()或者 getExternalCacheDir()路径下。
public class DataCleanUtils {
/**
* 获取缓存大小
*
* @param context
* @return
*/
public static String getTotalCacheSize(Context context) throws Exception {
long cacheSize = getFolderSize(context.getCacheDir());
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
cacheSize += getFolderSize(context.getExternalCacheDir());
}
return getFormatSize(cacheSize);
}
/*** 清除缓存** @param context*/
public static void clearAllCache(Context context) {deleteDir(context.getCacheDir());if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {deleteDir(context.getExternalCacheDir());}
}private 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();
}// 获取文件大小
//Context.getExternalFilesDir() --> SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据
//Context.getExternalCacheDir() --> SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据
public static long getFolderSize(File file) throws Exception {long size = 0;try {File[] fileList = file.listFiles();for (int i = 0; i < fileList.length; i++) {// 如果下面还有文件if (fileList[i].isDirectory()) {size = size + getFolderSize(fileList[i]);} else {size = size + fileList[i].length();}}} catch (Exception e) {e.printStackTrace();}return size;
}/*** 格式化单位** @param size* @return*/
public static String getFormatSize(double size) {double kiloByte = size / 1024;if (kiloByte < 1) {
// return size + “Byte”;
return “0K”;
}
double megaByte = kiloByte / 1024;if (megaByte < 1) {BigDecimal result1 = new BigDecimal(Double.toString(kiloByte));return result1.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "K";}double gigaByte = megaByte / 1024;if (gigaByte < 1) {BigDecimal result2 = new BigDecimal(Double.toString(megaByte));return result2.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "M";}double teraBytes = gigaByte / 1024;if (teraBytes < 1) {BigDecimal result3 = new BigDecimal(Double.toString(gigaByte));return result3.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "GB";}BigDecimal result4 = new BigDecimal(teraBytes);return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString()+ "TB";
}
}
当然,上面只是清除了data/data/com.xxx.xxx/files下的内容和data/data/com.xxx.xxx/cache下的文件,
我们的应用程序一般会产生以下几种类型的数据:
file-普通的文件存储
database-数据库文件(.db文件)
sharedPreference-配置数据(.xml文件)
cache-图片缓存文件,
但是开发中有可能将一些登录信息,例如账号密码存储到sp中,所以这些数据的删除要根据实际项目需求决定。
当然,你也有可能申请SDCard的存储,所以根据自己SD卡的路径进行相应删除。
Android清除缓存,清除数据相关推荐
- 微信小程序清除缓存clearStorageSync和removeStorageSync的区别 清除缓存问题 数据缓存详解
wx.setStorage(key)和wx.setStorageSync(key) 将数据存储在本地缓存中指定的 key 中.会覆盖掉原来该 key 对应的内容.除非用户主动删除或因存储空间原因被系统 ...
- ionic应用程序文件保存和清除缓存
ionic应用程序文件保存和清除缓存 一.简介 在开发ionic应用程序中,我们难免会涉及到文件的下载,并且将下载的文件(可以是png,pdf,zip等文件)保存到本地,时间一久,文件堆积过多,就需要 ...
- html5清除手机页面缓存文件夹,WebView自动缓存-清除缓存
iOS的Webview加载HTML时会自动缓存JS.CSS等文件,当下次加载HTML时会根据请求的缓存策略是否使用缓存本地的JS和CSS,如果本地有缓存,那么直接返回本地资源(判断是否过期):如果没有 ...
- 服务器中Redis清除缓存
服务器中Redis清除缓存 清除缓存: //进入安装redis 的目录 进入 对应的 redis-cli //有设置的密码就输入密码登录,没有就直接进入 auth [username] passwro ...
- ajax 自动清缓存,ajax 清除缓存
$.ajax({ url : actionUrl , beforeSend :function(xmlHttp){ // deforeSend 是请求前清除缓存 ,如果没有缓存也不使用before ...
- WebView自动H5缓存-清除缓存ios
iOS的Webview加载HTML时会自动缓存JS.CSS等文件,当下次加载HTML时会根据请求的缓存策略是否使用缓存本地的JS和CSS,如果本地有缓存,那么直接返回本地资源(判断是否过期):如果没有 ...
- iOS 设置中清除缓存功能
绝大多数应用中都存在着清楚缓存的功能,形形色色,各有千秋,现为大家介绍一种最基础的清除缓存的方法.清除缓存基本上都是在设置界面的某一个Cell,于是我们可以把清除缓存封装在某一个自定义Cell中,如下 ...
- android清除缓存有哪些,Android中的清除数据和清除缓存有什么区别,它们分别清除了哪些文件...
清除数据和清除缓存的区别 反射调用系统隐藏接口,需要准备的东西: 一.在AndroidManifest.xml中的manifest标签下添加声明 android:sharedUserId=" ...
- Android清除缓存、清除数据
一.概念 清除数据.清除缓存的区别 清除数据主要是清除用户配置,比如SharedPreferences.数据库等等,这些数据都是在程序运行过程中保存的用户配置信息,清除数据后,下次进入程序就和第一次进 ...
最新文章
- DRF (Django REST framework) 中的视图类
- Java实现pdf和Excel的生成及数据动态插入、导出
- IN-12辉光数码管:俄罗斯进口的器件
- no connection could be made because the target machine actively refused it.问题解决
- 2 WM配置-企业结构-分配-给工厂和库存地点分配仓库号
- 95-10-025-启动-BrokerId相关
- oracle数据设置为ull,IMX6ULL启动和烧写
- 程序员版的《后来的我们》,结局竟是……
- 详解如何实现最基本的AJAX框架
- Moorhuhn Kart 2 XXL Maps
- R8500 MPv2 版本 刷梅林改版固件
- 微铺子点单系统具体介绍 - 争做国内最专业的微信商店平台,微信外卖订餐系统!...
- 部署3PAR VSP5.0.9.2监控3PAR实时邮件告警状态
- c#窗体开发俄罗斯方块小游戏
- 您可能是盗版软件的受害者——解决办法
- N 个Android 视频教程免费下载
- burpSuit抓取app的数据包
- Windows Server 2008启用禁用IE增强的安全配置
- 【Linux】动态库与静态库
- 飞速创软亮相南方信息大会,获评年度CIO优选数字化服务商