app里面我们一般都会集成第三方SDK,有时候app使用久了,里面的数据库就会太满,从而导致应用carsh,那么我们就得想下办法, 思路如下
1、扫描sdk目录数据库存放路径,也就是包名/data/data
2、然后再从子目录查找,如果是db文件就直接删除
/* 清空缓存数据库
*
* @desc 每天清空一次
*/
private void cleanDBData() {
SharedPreferences sharedPreferences = getSharedPreferences("clear_data_recode", MODE_PRIVATE);
String data = sharedPreferences.getString("date", "");
String currentDate = DateUtils.date2String(System.currentTimeMillis());
if (data.equals(currentDate)) {
return;
}
String packageName = getPackageName();
File fileRoot = new File("data/data/" + packageName);
try {
if (fileRoot.exists() || fileRoot.isDirectory()) {
File[] files = fileRoot.listFiles();
if (files == null) {
return;
}
for (int i = 0; i < files.length; i++) {
//Log.i("data_file",files[i].getName());
String name = files[i].getName();
if (("databases".equals(name) || "files".equals(name) && files[i].isDirectory())) {
File[] filesLast = files[i].listFiles();
if (filesLast == null) {
break;
}
for (File file : filesLast) {
//文件存在非目录
if (file != null && file.exists() && !file.isDirectory() && file.getPath().contains(".db")) {
Log.i("data_file", file.getAbsolutePath() + ",size=" + file.length());
file.delete();
}
}
SharedPreferences spSave = getSharedPreferences("clear_data_recode", MODE_PRIVATE);
SharedPreferences.Editor editor = spSave.edit();
editor.putString("date", DateUtils.date2String(System.currentTimeMillis()));
editor.commit();
}
}
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}