-
Notifications
You must be signed in to change notification settings - Fork 803
/
AppCleanMgr.java
140 lines (119 loc) · 4.82 KB
/
AppCleanMgr.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
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;
}
}