android app数据库溢出清理方法

916 阅读1分钟

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());
        }
    }