清楚本地緩存數據

在開發過程中我們經常會遇到需要清除本地緩存數據的需求,今天簡單的寫了一下,下面直接上代碼           

/**
 * 清除本應用內部緩存(/data/data/com.xxx.xxx/cache)
 *
 * @param context
 */
public static void cleanInternalCache(Context context) {
    deleteFilesByDirectory(context.getCacheDir());
}

/**
 * 清除本應用所有數據庫(/data/data/com.xxx.xxx/databases)
 *
 * @param context
 */
public static void cleanDatabases(Context context) {
    deleteFilesByDirectory(new File("/data/data/"
            + context.getPackageName() + "/databases"));
}

/**
 * 清除本應用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"));
}

/**
 * 按名字清除本應用數據庫
 *
 * @param context
 * @param dbName
 */
public static void cleanDatabaseByName(Context context, String dbName) {
    context.deleteDatabase(dbName);
}

/**
 * 清除/data/data/com.xxx.xxx/files下的內容
 *
 * @param context
 */
public static void cleanFiles(Context context) {
    deleteFilesByDirectory(context.getFilesDir());
}

/**
 * 清除外部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 filePath
 */
public static void cleanCustomCache(String filePath) {
    deleteFilesByDirectory(new File(filePath));
}

/**
 * 清除本應用所有的數據
 *
 * @param context
 * @param filepath
 */
public static void cleanApplicationData(Context context, String... filepath) {
    cleanInternalCache(context);
    cleanExternalCache(context);
    cleanDatabases(context);
    cleanSharedPreference(context);
    cleanFiles(context);
    for (String filePath : filepath) {
        cleanCustomCache(filePath);
    }
}

/**
 * 刪除方法 這裏只會刪除某個文件夾下的文件,如果傳入的directory是個文件,將不做處理
 *
 * @param directory
 */
private static void deleteFilesByDirectory(File directory) {
    if (directory != null && directory.exists() && directory.isDirectory()) {
        for (File item : directory.listFiles()) {
            item.delete();
        }
    }
}





發佈了32 篇原創文章 · 獲贊 6 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章