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";
 }
} 

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

(0)

相关推荐

  • Android中Glide获取缓存大小并清除缓存图片

    清除Glide缓存 Glide自带清除缓存的功能,分别对应Glide.get(context).clearDiskCache();(清除磁盘缓存)与Glide.get(context).clearMemory();(清除内存缓存)两个方法.其中clearDiskCache()方法必须运行在子线程,clearMemory()方法必须运行在主线程,这是这两个方法所强制要求的,详见源码. 获取Glide缓存空间大小 这个网上也有过一些介绍,但是给出的实现代码存在一些问题,我这里做了一定的修改.一下方法

  • android开发教程之清除android数据缓存示例(清除本地数据缓存)

    复制代码 代码如下: /*  * 文 件 名:  DataCleanManager.java  * 描    述:  主要功能有清除内/外缓存,清除数据库,清除sharedPreference,清除files和清除自定义目录  */ import java.io.File;import android.content.Context;import android.os.Environment; /** * 本应用数据清除管理器 */public class DataCleanManager { 

  • Android 获取应用缓存大小与清除缓存的方法

    如下所示: package com.lucasey.littleant.frame; /** * 文 件 名: FileCacheUtils.java * 描 述: 主要功能有清除内/外缓存,清除数据库,清除sharedPreference,清除files和清除自定义目录 * */ import java.io.File; import java.math.BigDecimal; import android.content.Context; import android.os.Environm

  • Android实现清除应用缓存功能

    本文实例为大家分享了Android清除应用缓存的具体代码,供大家参考,具体内容如下 import android.content.Context; import android.os.Environment; import java.io.File; import java.math.BigDecimal; /** * 获取缓存大小并清理缓存 */ public class DataCleanManagerUtils { /** * Context.getExternalFilesDir() -

  • android实现清理缓存功能

    android之清理缓存实现,供大家参考,具体内容如下 一. 清理缓存首先要搞清楚清理哪些东西 1.app本身的功能比如录像,录音,更新都会产生文件,需要清理 2.app的默认缓存地址cache 二. 搞清楚要清理的文件夹位置 1.首先app自身的功能就要看自己把它放在了什么位置 2.默认缓存地址:getActivity().getExternalCacheDir(); 这个位置是在storage/emulated/0/Android/data/com.xxxxxapp/cache 三.代码功能

  • iOS开发之清除缓存功能的实现

    前言 移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage.但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯.购物.阅读类app的标配功能. 清除缓存基本上都是在设置界面的某一个Cell,于是我们可以把清除缓存封装在某一个自定义Cell中 如下图所示: 实现的具体步骤 使用注意:过程中需要用到第三方库,请提前安装好:SDWebImage.SVProgressHUD. 1. 创建自定义Cell,命名为GYLClear

  • iOS中设置清除缓存功能的实现方法

    绝大多数应用中都存在着清楚缓存的功能,形形色色,各有千秋,现为大家介绍一种最基础的清除缓存的方法.清除缓存基本上都是在设置界面的某一个Cell,于是我们可以把清除缓存封装在某一个自定义Cell中,如下图所示: 具体步骤 使用注意:过程中需要用到第三方库,请提前安装好:SDWebImage.SVProgressHUD. 1. 创建自定义Cell,命名为GYLClearCacheCell 重写initWithStyle:(UITableViewCellStyle)style reuseIdentif

  • Android 带清除功能的输入框控件实例详解

    Android 带清除功能的输入框控件实例详解 今天,看到一个很好的自定义输入框控件,于是记录一下. 效果很好: 一,自定义一个类,名为ClearEditText package com.example.clearedittext; import android.content.Context; import android.graphics.drawable.Drawable; import android.text.Editable; import android.text.TextWatc

  • Android自定义控件EditText实现清除和抖动功能

    本文实例为大家分享了Android EditText实现清除和抖动功能的具体代码,供大家参考,具体内容如下 源码如下: public class ClearEditText extends EditText implements View.OnFocusChangeListener,TextWatcher { / * 删除按钮的引用 */ private Drawable mClearDrawable; / * 控件是否有焦点 */ private boolean hasFoucs; publi

  • TP5(thinkPHP框架)实现后台清除缓存功能示例

    本文实例讲述了TP5(thinkPHP框架)实现后台清除缓存功能.分享给大家供大家参考,具体如下: layui插件 http://www.layui.com/ 1--common的文件 /** * 循环删除目录和文件 * @param string $dir_name * @return bool */ function delete_dir_file($dir_name) { $result = false; if(is_dir($dir_name)){ if ($handle = opend

  • Android清除应用缓存的两种方法

    第一种 使用ActivityManager中的clearApplicationUserData方法,代码如下: ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); am.clearApplicationUserData(); 这种方式的问题就是不知清除cache,连带应用的data也删除了.如下图所示: 第二种 使用PackageManager中的deleteApplicationC

  • ASP.NET网站管理系统退出 清除浏览器缓存,Session的代码

    1.在系统登陆成功时记录登陆的用户名.密码等信息(登陆功能的部分代码) 复制代码 代码如下: Session["id"] = user.id.ToString(); Session["name"] = user.name.ToString(); Session["pwd"] = user.password.ToString(); Session["time"] = user.LoginTime.ToString(); Sess

随机推荐