package com.jingewenku.abrahamcaijin.commonutil;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Environment;
import java.io.File;
import java.text.DecimalFormat;
/**
* 主要功能: 提供App数据清理工作的类
* @Prject: CommonUtilLibrary
* @Package: com.jingewenku.abrahamcaijin.commonutil
* @author: AbrahamCaiJin
* @date: 2017年05月03日 16:37
* @Copyright: 个人版权所有
* @Company:
* @version: 1.0.0
*/
@SuppressLint("SdCardPath")
public class AppCleanMgr {
/**
* 清除本应用内部缓存数据(/data/data/com.xxx.xxx/cache)
* @param context 上下文
* @return void
*/
public static void cleanInternalCache(Context context) {
AppFileMgr.deleteFilesByDirectory(context.getCacheDir());
AppLogMessageMgr.i("AppCleanMgr->>cleanInternalCache", "清除本应用内部缓存(/data/data/" + context.getPackageName() + "/cache)");
}
/**
* 清除本应用外部缓存数据(/mnt/sdcard/android/data/com.xxx.xxx/cache)
* @param context 上下文
* @return void
*/
public static void cleanExternalCache(Context context) {
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
AppFileMgr.deleteFilesByDirectory(context.getExternalCacheDir());
AppLogMessageMgr.i("AppCleanMgr->>cleanExternalCache", "清除本应用外部缓存数据(/mnt/sdcard/android/data/" + context.getPackageName() + "/cache)");
}
}
/**
* 清除本应用所有数据库(/data/data/com.xxx.xxx/databases)
* @param context 上下文
* @return void
*/
public static void cleanDatabases(Context context) {
AppFileMgr.deleteFilesByDirectory(new File("/data/data/" + context.getPackageName() + "/databases"));
AppLogMessageMgr.i("AppCleanMgr->>cleanDatabases", "清除本应用所有数据库");
}
/**
* 清除本应用SharedPreference(/data/data/com.xxx.xxx/shared_prefs)
* @param context 上下文
* @return void
*/
public static void cleanSharedPreference(Context context) {
AppFileMgr.deleteFilesByDirectory(new File("/data/data/" + context.getPackageName() + "/shared_prefs"));
AppLogMessageMgr.i("AppCleanMgr->>cleanSharedPreference", "清除本应用cleanSharedPreference数据信息");
}
/**
* 根据名字清除本应用数据库
* @param context 上下文
* @param dbName
* @return void
*/
public static void cleanDatabaseByName(Context context, String dbName) {
context.deleteDatabase(dbName);
AppLogMessageMgr.i("AppCleanMgr->>cleanDatabaseByName", "根据名字清除本应用数据库");
}
/**
* 清除本应用files文件(/data/data/com.xxx.xxx/files)
* @param context 上下文
* @return void
*/
public static void cleanFiles(Context context) {
AppFileMgr.deleteFilesByDirectory(context.getFilesDir());
AppLogMessageMgr.i("AppCleanMgr->>cleanFiles", "清除data/data/" + context.getPackageName() + "/files下的内容信息");
}
/**
* 清除本应用所有的数据
* @param context 上下文
* @return int
*/
public static int cleanApplicationData(Context context) {
//清除本应用内部缓存数据
cleanInternalCache(context);
//清除本应用外部缓存数据
cleanExternalCache(context);
//清除本应用SharedPreference
cleanSharedPreference(context);
//清除本应用files文件
cleanFiles(context);
AppLogMessageMgr.i("AppCleanMgr->>cleanApplicationData", "清除本应用所有的数据");
return 1;
}
/**
* 获取App应用缓存的大小
* @param context 上下文
* @return String
*/
public static String getAppClearSize(Context context) {
long clearSize = 0;
String fileSizeStr = "";
DecimalFormat df = new DecimalFormat("0.00");
//获得应用内部缓存大小
clearSize = AppFileMgr.getFileSize(context.getCacheDir());
//获得应用SharedPreference缓存数据大小
clearSize += AppFileMgr.getFileSize(new File("/data/data/" + context.getPackageName() + "/shared_prefs"));
//获得应用data/data/com.xxx.xxx/files下的内容文件大小
clearSize += AppFileMgr.getFileSize(context.getFilesDir());
//获取应用外部缓存大小
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
clearSize += AppFileMgr.getFileSize(context.getExternalCacheDir());
}
if(clearSize > 5000) {
//转换缓存大小Byte为MB
fileSizeStr = df.format((double) clearSize / 1048576) + "MB";
}
AppLogMessageMgr.i("AppCleanMgr->>getAppClearSize", "获取App应用缓存的大小");
return fileSizeStr;
}
}