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; | |
} | |
} |
提供App数据清理工作的类 → AppCleanMgr
最新推荐文章于 2024-06-24 16:23:49 发布