如何在更新应用程序后清理数据,以使该代码在更新后仅执行一次,并且数据为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();
}
答案 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()