Android清空應用內部文件緩存
Android應用中加載的圖片以及一些數據緩存怎么清掉呢?最近在做項目中遇到了這個問題,網上搜了一下找到了不少的源代碼,綜合了這些源碼,下面給大家說一下吧,怎么有效的清除應用內存的緩存信息?
清除應用內部緩存主要包含以下幾大模塊:
一、清除應用本地所有數據庫緩存
/** * 清除本應用所有數據庫(/data/data/com.xxx.xxx/databases) * * @param context */ public static void cleanDatabases(Context context) { deleteFilesByDirectory(new File("/data/data/" + context.getPackageName() + "/databases")); }
二、清除本應用SharePreference數據
/** * * 清除本應用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")); }
三、清除data/data/com.xxx.xxx/files數據
/** * 清除/data/data/com.xxx.xxx/files下的內容 * * @param context */ public static void cleanFiles(Context context) { File sdDir = Environment.getExternalStorageDirectory();//獲取跟目錄 sdDir = new File(sdDir.getPath()+File.separator+"xxx"); sdDir = new File(sdDir.getPath() +File.separator+ "files"); deleteFilesByDirectory(sdDir); }
四、清除外部cache下的數據
/** * * 清除外部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 file File實例 * @return long */ public static long getFolderSize(java.io.File file){ long size = 0; try { java.io.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) { // TODO Auto-generated catch block e.printStackTrace(); } //return size/1048576; return size; }
主要就是遍歷文件夾,獲取文件夾中的文件的大小,獲取緩存大小。如果應用內的一些緩存圖片不希望被刪除,還是將緩存的圖片放到指定的文件夾中,刪除的時候不要刪除該文件夾,這樣就不會因為清空緩存而重新加載圖片了。
以上就是關于Android清空應用內部文件緩存方法的詳細介紹,希望對大家的學習有所幫助。
相關文章
Flutter?Widget開發(fā)之Focus組件圖文詳解
這篇文章主要為大家介紹了Flutter?Widget開發(fā)之Focus組件圖文詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12Android getBackground().setAlpha遇到問題解決辦法
這篇文章主要介紹了Android getBackground().setAlpha遇到問題解決辦法的相關資料用,getBackground().setAlpha,導致其他布局背景透明度都改變的問題,需要的朋友可以參考下2017-03-03android開發(fā)之listView組件用法實例簡析
這篇文章主要介紹了android開發(fā)之listView組件用法,結合實例形式簡單分析了listView組件的相關屬性與使用技巧,需要的朋友可以參考下2016-01-01