更新应用程序后如何删​​除数据

时间:2019-01-15 10:18:58

标签: java android

如何在更新应用程序后清理数据,以使该代码在更新后仅执行一次,并且数据为0kb ?谢谢

public void clearApplicationData() {
    File cache = getCacheDir();
    File appDir = new File(cache.getParent());
    if (appDir.exists()) {
        String[] children = appDir.list();
        for (String s : children) {
            if (!s.equals("lib")) {
                deleteDir(new File(appDir, s));
                Log.i("TAG", "**************** File /data/data/APP_PACKAGE/" + s + " DELETED *******************");
            }
        }
    }
}

public static boolean deleteDir(File dir) {
    if (dir != null && dir.isDirectory()) {
        String[] children = dir.list();
        for (int i = 0; i < children.length; i++) {
            boolean success = deleteDir(new File(dir, children[i]));
            if (!success) {
                return false;
            }
        }
    }

    return dir.delete();
}

1 个答案:

答案 0 :(得分:0)

假设您安装了1.0版。

sharedPreferences中保存版本代码,并将应用程序版本代码与每次应用启动时保存的版本代码进行比较

如果您更新该应用程序,那么您拥有1.1,并且在您启动时会看到保存的是1.0,现在是{{1} }。因此,这意味着您需要使用清除功能清除应用程序数据。

类似这样的东西:

1.1

以及应用程序的MainActivity fun saveVersion() { val currentVersion = context.packageManager .getPackageInfo(context.packageName, 0) .run { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { longVersionCode } else { versionCode.toLong() } } val sharedPreferences: SharedPreferences = context.getSharedPreferences("myPref", Context.MODE_PRIVATE) sharedPreferences.edit().putLong("versionCode", currentVersion).apply() } fun getSavedVersion(): Long { val sharedPreferences: SharedPreferences = context.getSharedPreferences("myPref", Context.MODE_PRIVATE) return sharedPreferences.getLong("versionCode", -1L) }

onCreate()