Android实现清除应用缓存功能

 更新时间:2019年11月21日 09:18:43   作者:NNadn  
这篇文章主要为大家详细介绍了Android实现清除应用缓存功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Android清除应用缓存的具体代码,供大家参考,具体内容如下

import android.content.Context;
import android.os.Environment;
import java.io.File;
import java.math.BigDecimal;
 
/**
 * 获取缓存大小并清理缓存
 */
 
public class DataCleanManagerUtils {
 
 /**
  * Context.getExternalFilesDir() --> SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据
  * Context.getExternalCacheDir() --> SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据
  */
 
 /**
  * 获取缓存值
  */
 public static String getTotalCacheSize(Context context) {
 
  long cacheSize = getFolderSize(context.getCacheDir());
  if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
   cacheSize += getFolderSize(context.getExternalCacheDir());
  }
  return getFormatSize(cacheSize);
 }
 
 /**
  * 清除所有缓存
  */
 public static void clearAllCache(Context context) {
  deleteDir(context.getCacheDir());
  if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
   deleteDir(context.getExternalCacheDir());
   //TODO 有网页清理时注意排错,是否存在/data/data/应用package目录下找不到database文件夹的问题
   context.deleteDatabase("webview.db");
   context.deleteDatabase("webviewCache.db");
  }
 }
 
 /**
  * 删除某个文件
  */
 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();
  }
  if (dir != null) {
   return dir.delete();
  } else {
   return false;
  }
 }
 
 /**
  * 获取文件
  */
 public static long getFolderSize(File file) {
  long size = 0;
  if (file != null) {
   File[] fileList = file.listFiles();
   if (fileList != null && fileList.length > 0) {
    for (int i = 0; i < fileList.length; i++) {
     // 如果下面还有文件
     if (fileList[i].isDirectory()) {
      size = size + getFolderSize(fileList[i]);
     } else {
      size = size + fileList[i].length();
     }
    }
   }
  }
  return size;
 }
 
 /**
  * 格式化单位
  */
 public static String getFormatSize(double size) {
  double kiloByte = size / 1024;
  double megaByte = kiloByte / 1024;
  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 = BigDecimal.valueOf(teraBytes);
  return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString()
   + "TB";
 }
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android实现双击TitleBar回顶部的功能示例代码

    Android实现双击TitleBar回顶部的功能示例代码

    一个简单易用的导航栏TitleBar,可以轻松实现IOS导航栏的各种效果,下面这篇文章主要给大家介绍了关于Android如何实现双击TitleBar回顶部功能的相关资料,文中给出了详细的示例代码,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • Android 实现文字左右对齐

    Android 实现文字左右对齐

    这篇文章主要介绍了Android 实现文字左右对齐效果的方法,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下
    2021-05-05
  • Android XListView下拉刷新和上拉加载更多

    Android XListView下拉刷新和上拉加载更多

    这篇文章主要为大家详细介绍了Android XListView下拉刷新和上拉加载更多,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Android DialogFragment使用之底部弹窗封装示例

    Android DialogFragment使用之底部弹窗封装示例

    这篇文章主要为大家介绍了Android DialogFragment使用之底部弹窗封装示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Android如何为按键添加声音

    Android如何为按键添加声音

    这篇文章主要告诉大家Android为按键添加声音的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Android 防止多次重复点击的三种方法的示例

    Android 防止多次重复点击的三种方法的示例

    本篇文章主要介绍了Android 防止多次重复点击的三种方法的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Android Flutter实现搜索的三种方式详解

    Android Flutter实现搜索的三种方式详解

    这篇文章主要为大家详细介绍了Android Flutter实现搜索的三种方式,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的可以了解一下
    2022-08-08
  • Android 软键盘自动弹出与关闭实例详解

    Android 软键盘自动弹出与关闭实例详解

    这篇文章主要介绍了Android 软键盘自动弹出与关闭实例详解的相关资料,为了用户体验应该自动弹出软键盘而不是让用户主动点击输入框才弹出,这里举例说明该如何实现,需要的朋友可以参考下
    2016-12-12
  • android POST数据遇到的UTF-8编码(乱码)问题解决办法

    android POST数据遇到的UTF-8编码(乱码)问题解决办法

    这篇文章主要介绍了android POST数据遇到的UTF-8编码(乱码)问题解决办法,需要的朋友可以参考下
    2014-04-04
  • Android Listview点赞问题关于图片重复问题

    Android Listview点赞问题关于图片重复问题

    最近在开发android方面的项目时,遇到很多问题,下面小编以listview 与 baseadapter结合使用为例,给大家分享下关于点赞的的时候 图片重复问题的解决方法,一起看看吧
    2016-11-11

最新评论