SharedPreferences.Editor 类有一个clear() 函数,用于删除所有存储的首选项(在commit() 之后)。您可以创建一个布尔标志来指示是否需要更新:
void updatePreferences() {
SharedPreferences prefs = ...;
if(prefs.getBoolean("update_required", true)) {
SharedPreferences.Editor editor = prefs.edit();
editor.clear();
/*....make the updates....*/
editor.putBoolean("update_required", false)
editor.commit();
}
}
然后,您需要在您的主要(第一次启动)活动中调用它,然后才能访问任何首选项。
编辑:
获取当前版本(manifest中声明的versionCode):
int version = 1;
try {
version = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
if(version > ...) {
//do something
}
编辑
如果你想做一些更新操作,每当版本发生变化时,你可以这样做:
void runUpdatesIfNecessary() {
int versionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
SharedPreferences prefs = ...;
if (prefs.getInt("lastUpdate", 0) != versionCode) {
try {
runUpdates();
// Commiting in the preferences, that the update was successful.
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("lastUpdate", versionCode);
editor.commit();
} catch(Throwable t) {
// update failed, or cancelled
}
}
}