很多App设置里面都会有清理缓存这个小功能,当我们app所浏览一些图片啊,或者信息,都会缓存起来,包括存在本地的一些数据,这些呢会使我们app占用的内存变大,但是会节省我们的流量使用,我们清理缓存后占用内存就会小很多,下面进行我们的代码   首先 我们要一个工具类,这个工具类是用来清理缓存的,调用里面的方法就可以

public class DataCleanManager {/*** * 清除本应用内部缓存(/data/data/com.xxx.xxx/cache) * *** @param context*/public static void cleanInternalCache(Context context) {deleteFilesByDirectory(context.getCacheDir());}/*** * 清除本应用所有数据库(/data/data/com.xxx.xxx/databases) * *** @param context*/public static void cleanDatabases(Context context) {deleteFilesByDirectory(new File("/data/data/"+ context.getPackageName() + "/databases"));}/*** * 清除本应用SharedPreference(/data/data/com.xxx.xxx/shared_prefs) *** @param context*/public static void cleanSharedPreference(Context context) {deleteFilesByDirectory(new File("/data/data/"+ context.getPackageName() + "/shared_prefs"));}/*** * 按名字清除本应用数据库 * *** @param context* @param dbName*/public static void cleanDatabaseByName(Context context, String dbName) {context.deleteDatabase(dbName);}/*** * 清除/data/data/com.xxx.xxx/files下的内容 * *** @param context*/public static void cleanFiles(Context context) {deleteFilesByDirectory(context.getFilesDir());}/*** * 清除外部cache下的内容(/mnt/sdcard/android/data/com.xxx.xxx/cache)** @param context*/public static void cleanExternalCache(Context context) {if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {deleteFilesByDirectory(context.getExternalCacheDir());}}/*** * 清除自定义路径下的文件,使用需小心,请不要误删。而且只支持目录下的文件删除 * *** @param filePath* */public static void cleanCustomCache(String filePath) {deleteFilesByDirectory(new File(filePath));}/*** * 清除本应用所有的数据 * *** @param context* @param filepath*/public static void cleanApplicationData(Context context, String... filepath) {cleanInternalCache(context);cleanExternalCache(context);cleanDatabases(context);//cleanSharedPreference(context);cleanFiles(context);if (filepath == null) {return;}for (String filePath : filepath) {cleanCustomCache(filePath);}}/*** * 删除方法 这里只会删除某个文件夹下的文件,如果传入的directory是个文件,将不做处理 * *** @param directory*/private static void deleteFilesByDirectory(File directory) {if (directory != null && directory.exists() && directory.isDirectory()) {for (File item : directory.listFiles()) {item.delete();}}}}

先获取缓存在oncreate方法里面写显示缓存数据方法

private void initEX() throws Exception {long cacheSize = getFolderSize(getCacheDir());if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {cacheSize += getFolderSize(getExternalCacheDir());}clear_huan.setText(getFormatSize(cacheSize).toString());//将获取到的大小set进去}

获取文件缓存  也要写进去

// 获取文件
//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;
}public static String getFormatSize(double size) throws Exception {double kiloByte = size / 1024;if (kiloByte < 1) {return size + "Byte";}double megaByte = kiloByte / 1024;if (megaByte < 1) {BigDecimal result1 = new BigDecimal(Double.toString(kiloByte));return result1.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "KB";}double gigaByte = megaByte / 1024;if (gigaByte < 1) {BigDecimal result2 = new BigDecimal(Double.toString(megaByte));return result2.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "MB";}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";}

点击事件里面直接写 是否清理逻辑就好了

 //点击事件@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.r5:// 这里的属性可以一直设置,因为每次设置后返回的是一个builder对象AlertDialog.Builder builder = new AlertDialog.Builder(this);// 设置提示框的标题builder
//                        .setTitle("新部落更新喽")// 设置要显示的信息.setMessage("你确定清空缓存吗").// 设置确定按钮setPositiveButton("清除", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {DataCleanManager.cleanApplicationData(MyInformation.this);Toast.makeText(MyInformation.this, "清除成功", Toast.LENGTH_SHORT).show();clear_huan.setText("0.0MB");}}).// 设置取消按钮,null是什么都不做,并关闭对话框setNegativeButton("取消", null);// 生产对话框AlertDialog alertDialog = builder.create();// 显示对话框alertDialog.show();break;}}

到这里就是 清理app缓存数据的了,最重要的还是那个工具类,调用那个工具类就可以完成

android 实现清理缓存功能相关推荐

  1. android清理缓存功能吗,android实现清理缓存功能

    android之清理缓存实现,供大家参考,具体内容如下 一. 清理缓存首先要搞清楚清理哪些东西 1.app本身的功能比如录像,录音,更新都会产生文件,需要清理 2.app的默认缓存地址cache 二. ...

  2. android webview清理缓存

    android webview清理缓存 最近写了个Android项目 遇到了一个问题就是webview 的缓存问题 每次进入程序webview都用缓存.接下来说说这问题是如何解决的. 首先了解下缓存的 ...

  3. android app 清理缓存图片,支付宝APP怎么清理缓存 支付宝安卓版缓存清理方法

    当今社会支付方式已经越来越便捷化了,普通的现金支付方式已经逐渐被人们放弃,现在大部分朋友们都会使用支付宝APP进行手机移动支付.相信大家都知道,这款软件除了支付功能以外,还有许多其他功能,而这些功能往 ...

  4. android清理缓存功能吗,Android清理缓存功能实现

    我们都知道在Android的设置->应用程序中可以查看应用程序的相关信息,其中有一个功能是清除缓存.如图: 怎么实现这些功能呢,从Android的setting源码中可以得到相关信息. 实现如下 ...

  5. android 自动清理缓存图片吗,Android中Glide获取缓存大小并清除缓存图片

    清除Glide缓存 Glide自带清除缓存的功能,分别对应Glide.get(context).clearDiskCache();(清除磁盘缓存)与Glide.get(context).clearMe ...

  6. Android Studio 清理缓存方法

    Android studio 有时找不到R文件. 导入的资源.布局 . jar包 等  . 可能是studio 缓存造成的 . 这是可以使用 1) clean project  清理项目 2) inv ...

  7. iOS开发-清理缓存功能的实现

    移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为 SDWebImage . 但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯.购物.阅 ...

  8. android清理缓存实现,android之清理缓存实现

    /** * 获取app的缓存大小 * 1. 录制的视频/storage/emulated/0/xueliangapp/video/1573972925136.mp4 * 2. 录制的音频/storag ...

  9. flutter 显示缓存大小,清理缓存功能

    Flutter 获取应用缓存需要借助于path_provider插件. path_provider 是一个用于查找文件系统上常用位置的Flutter插件.用来获取 Android 和 iOS 的缓存文 ...

最新文章

  1. 虚幻UE4常见问题最全集合
  2. Bootstrap 与 Jquery validate 结合使用——简单实现
  3. 信息学奥赛一本通(C++)在线评测系统——基础(三)数据结构 —— 1354:括弧匹配检验
  4. CDH 组件升级:zookeeper升级到 3.4.14
  5. ASPNET Core 2.x中的Kestrel服务器
  6. 《MySQL——临时表》
  7. python msi installer_Windows10 MYSQL Installer 安装(mysql-installer-community-5.7.19.0.msi)
  8. java excel转dbf
  9. 电涡流传感器9200-06-05-10-00本特利
  10. 游戏公司架构和游戏开发流程概述
  11. 面试经验---广州品高软件(java软件开发)
  12. 如何实现Android端的录屏采集
  13. html中实现雪花飞舞,经典散文里雪花飞舞
  14. Xtool X100 PAD2 Error Code 5 Data Not Exist Solution
  15. 怎么做三维设计模型轻量化
  16. 2u服务器支持29块硬盘,01-正文
  17. 手机连接投影机的步骤_手机怎么连接投影仪?这几招实用
  18. JAVA-面向过程编程
  19. Altium Designer--如何将图片转成PCB logo
  20. 【计算机组成原理】门阵列译码器

热门文章

  1. 深度学习:泛化能力、不收敛
  2. java 两个运算符重载_Java中的操作符重载
  3. 如何让计算机玩游戏,怎样使电脑玩游戏速度加快?
  4. 【转载】白话谈anchor(锚点)
  5. 数据结构14——求广义表深度(严5.30)
  6. 让“最美”之花盛开!
  7. 华为cce敏捷版体验安装实录
  8. SQLyog无法连接mysql且不是因为未启动服务
  9. C++数据结构——队列
  10. Django--关于路由配置与模板层心得