Android APP中清除快取功能詳解

2021-06-16 18:13:23 字數 2691 閱讀 3273

快取資料的統計分2塊:記憶體(這裡指的是應用程式包目錄所在位置)+外存(外部儲存卡)

清除的目錄包括:

1./data/data/package_name/files

2./data/data/package_name/cache

3./android/data//cache/

4.webview快取資料

// 計算快取大小

long filesize = 0;

string cachesize = "0kb";

file filesdir = getfilesdir();// /data/data/package_name/files

file cachedir = getcachedir();// /data/data/package_name/cache

filesize += getdirsize(filesdir);

filesize += getdirsize(cachedir);

// 2.2版本才有將應用快取轉移到sd卡的功能

if(ismethodscompat(android.os.build.version_codes.froyo))

if (filesize > 0)

cachesize = formatfilesize(filesize);

/** * 獲取目錄檔案大小

** @param dir

* @return

*/public static long getdirsize(file dir)

if (!dir.isdirectory())

long dirsize = 0;

file files = dir.listfiles();

for (file file : files) else if (file.isdirectory())

}return dirsize;

}/** * 判斷當前版本是否相容目標版本的方法

* @param versioncode

* @return

*/public static boolean ismethodscompat(int versioncode)

@targetapi(8)

public static file getexternalcachedir(context context)

/** * 轉換檔案大小

** @param files

* @return b/kb/mb/gb

*/public static string formatfilesize(long files) else if (files < 1048576) else if (files < 1073741824) else

return filesizestring;

}/** *

* @param activity

*/final handler handler = new handler() else }};

new thread() catch (exception e)

handler.sendmessage(msg);

}}.start();

}在專案中經常會使用到webview 控制項,當載入html 頁面時,會在/data/data/package_name目錄下生成database與cache 兩個資料夾。請求的url 記錄是儲存在webviewcache.db,而url 的內容是儲存在webviewcache 資料夾下

/** */

file.delete();

}

deletedatabase("webview.db");

deletedatabase("webview.db-shm");

deletedatabase("webview.db-wal");

deletedatabase("webviewcache.db");

deletedatabase("webviewcache.db-shm");

deletedatabase("webviewcache.db-wal");

//清除資料快取

clearcachefolder(getfilesdir(),system.currenttimemillis());

clearcachefolder(getcachedir(),system.currenttimemillis());

版本才有將應用快取轉移到sd卡的功能

if(ismethodscompat(android.os.build.version_codes.froyo))

}

/*** 清除快取目錄

* @param dir 目錄

* @param numdays 當前系統時間

* @return

*/private int clearcachefolder(file dir, long curtime)

if (child.lastmodified() < curtime)

}

}

} catch(exception e)

}

return deletedfiles;

}

計算Android app快取大小以及清除快取

這是乙個常用功能,記錄一下 才是精華 object cacheutils return getformatsize cachesize.todouble 清理全部快取 param context fun clearallcache context context 刪除檔案 param dir ret...

android app 快取路徑

其中在外部儲存快取時部分機型會獨佔儲存裝置導致應用崩潰。dir this.getexternalcachedir getabsolutepath log.i 列印cache dir dir this.getfilesdir getpath log.i 列印filesdir dir dir envir...

Android中清除快取

有時候會遇到要清除應用快取的功能,不經常用,總忘,所以在這裡總結,實際價值個人感覺不大。快取管理類 public class datacleanmanager return getformatsize cachesize 清空快取 param context public static boolea...