中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

android中怎么實現清理緩存功能

發布時間:2021-08-07 15:17:50 來源:億速云 閱讀:221 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關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() < curTime) {            if (child.delete()) {              deletedFiles++;            }          }        }      } catch(Exception e) {        e.printStackTrace();      }    }    Log.d(TAG, "clearCacheFolder: 清除目錄: "+dir.getAbsolutePath());    return deletedFiles; }

關于android中怎么實現清理緩存功能就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大邑县| 孝昌县| 子长县| 翼城县| 宣威市| 南漳县| 阳信县| 喜德县| 徐州市| 黄浦区| 大名县| 宁强县| 霞浦县| 景洪市| 吉林市| 黄陵县| 安国市| 宜阳县| 凤冈县| 隆子县| 财经| 杭锦旗| 安庆市| 大荔县| 富川| 霍林郭勒市| 通江县| 聂荣县| 岳普湖县| 兴安县| 嘉鱼县| 祁门县| 克什克腾旗| 长兴县| 额济纳旗| 疏勒县| 太仆寺旗| 阜宁县| 武川县| 珠海市| 出国|