热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

android开发分享android实现清理缓存功能

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

android之清理缓存实现,供大家参考,具体内容如下

一. 清理缓存首先要搞清楚清理哪些东西

1、app本身的功能比如录像,录音,更新都会产生文件,需要清理
2、app的默认缓存地址cache

二. 搞清楚要清理的文件夹位置

1、首先app自身的功能就要看自己把它放在了什么位置
2、默认缓存地址:getactivity().getexternalcachedir();
这个位置是在storage/emulated/0/android/data/com.xxxxxapp/cache

三.代码功能模块:

1、获取app缓存大小,以字节为单位
2、获取某个文件夹的大小,以字节为单位
3、把字节单位换算成常用单位
4、把缓存大小设置到页面,清理前一次,清理后一次
5、删除文件夹功能
6、清除app缓存

  /**   * 获取app的缓存大小   * 1. 录制的视频/storage/emulated/0/xueliangapp/video/1573972925136.mp4   * 2. 录制的音频/storage/emulated/0/xueliangapp/radio/1573972925136.amr   * 3. 下载的更新包/storage/emulated/0/android/data/com.sdxzt.xueliangapp_v3/files/download/xueliang_update.apk   * 4. 缓存/storage/emulated/0/android/data/com.sdxzt.xueliangapp_v3/cache  */    file videodir,radiodir,filesdir,cachedir;    private string getappcache(){      long filesize = 0;      string cachesize = "0kb";      videodir = new file(environment.getexternalstoragedirectory()+"/xueliangapp/video");      log.d(tag, "getappcache: videodir大小: "+getdirsize(videodir));      radiodir = new file(environment.getexternalstoragedirectory()+"/xueliangapp/radio");      log.d(tag, "getappcache: radiodir大小: "+getdirsize(radiodir));      filesdir = getactivity().getexternalfilesdir(environment.directory_downloads);      log.d(tag, "getappcache: filesdir大小: "+getdirsize(filesdir));      ///storage/emulated/0/android/data/com.sdxzt.xueliangapp_v3/files,这里面有download文件夹,里面是下载的更新包      cachedir = getactivity().getexternalcachedir();      log.d(tag, "getappcache: cachedir大小: "+getdirsize(cachedir));      ///storage/emulated/0/android/data/com.sdxzt.xueliangapp_v3/cache      filesize += getdirsize(getactivity().getfilesdir());      filesize += getdirsize(getactivity().getcachedir());//这行是默认的缓存地址,看图片什么的会在这里积累缓存      filesize += getdirsize(videodir);      filesize += getdirsize(radiodir);      filesize += getdirsize(filesdir);      filesize += getdirsize(cachedir);      string filesizestr = formatfilesize(filesize);      log.d(tag, "getappcache: 总缓存大小: "+filesizestr);      return filesizestr;    }      /**     * 获取文件大小(字节为单位)     * @param dir     * @return     */    private long getdirsize(file dir) {      if (dir == null) {        return 0;      }      if (!dir.isdirectory()) {        return 0;      }      long dirsize = 0;      file[] files = dir.listfiles();      for (file file : files) {        if (file.isfile()) {          dirsize += file.length();//文件的长度就是文件的大小        } else if (file.isdirectory()) {          dirsize += file.length();          dirsize += getdirsize(file); // 递归调用继续统计        }      }      return dirsize;    }      /**     * 格式化文件长度     * @param filesize     * @return     */    private string formatfilesize(long filesize){      decimalformat df = new decimalformat("#0.00");//表示小数点前至少一位,0也会显示,后保留两位        string filesizestring = "";      if (filesize <1024) {        filesizestring = df.format((double) filesize) + "b";      } else if (filesize <1048576) {        filesizestring = df.format((double) filesize / 1024) + "kb";      } else if (filesize <1073741824) {        filesizestring = df.format((double) filesize / 1048576) + "mb";      } else {        filesizestring = df.format((double) filesize / 1073741824) + "g";      }      return filesizestring;    }    private void setappcache() {      string filesize = getappcache();      filesizetv.settext(filesize);      log.d(tag, "setappcache: 重新显示缓存大小");      log.d(tag, "setappcache: 当前缓存"+filesize);    }      public void clearappcache(final activity activity){        final handler handler = new handler(){        @override        public void handlemessage(@nonnull message msg) {          super.handlemessage(msg);          log.d(tag, "handlermessage: ");          if (msg.what == 1) {            setappcache();            log.d(tag, "handlermessage: 缓存清除完毕");            toastutil.showmsg(getactivity(),"缓存清除完毕");          }else {            toastutil.showmsg(getactivity(),"缓存清除失败");            log.d(tag, "handlermessage: 缓存清除失败");          }        }      };        new thread(new runnable() {        @override        public void run() {          log.d(tag, "run: ");          message msg = new message();          try {            clearcachefolder(videodir,system.currenttimemillis());            clearcachefolder(radiodir,system.currenttimemillis());            clearcachefolder(filesdir,system.currenttimemillis());            clearcachefolder(cachedir,system.currenttimemillis());            msg.what = 1;          }catch (exception e){            e.printstacktrace();            msg.what = -1;          }          handler.sendmessage(msg);        }      }).start();    }        /**     * 清除缓存目录     * @param dir 目录     * @param curtime 当前系统时间     */    private int clearcachefolder(file dir,long curtime){      int deletedfiles = 0;      if (dir!= null && dir.isdirectory()) {        try {          for (file child:dir.listfiles()) {            if (child.isdirectory()) {              deletedfiles += clearcachefolder(child, curtime);            }            if (child.lastmodified() 

以上就是android开发分享android实现清理缓存功能的全部内容,希望对大家的学习有所帮助,也希望大家多多支持<编程笔记>。


推荐阅读
author-avatar
手机用户2602940163
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有