La clase SharedPreferences.Editor
tiene una función clear()
, lo que elimina todas las preferencias almacenadas (después de commit()
). Se puede crear un indicador booleano que indicará si es necesario de actualizado:
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();
}
}
Y después de que usted tenga que llamar a esto en su actividad principal (primera partida), antes de acceder a cualquier preferenes.
EDITAR
Para obtener la versión actual (La versionCode declarado en el manifiesto):
int version = 1;
try {
version = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
if(version > ...) {
//do something
}
EDITAR
Si desea hacer alguna operación de actualización, siempre que el la versión cambia, entonces puede hacer algo como esto:
void runUpdatesIfNecessary() {
int versionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
SharedPreferences prefs = ...;
if (prefs.getInt("lastUpdate", 0) != versionCode) {
try {
runUpddates();
// 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
}
}
}
¿Se puede decir cuándo el usuario decide hacer una actualización en el mercado de Google Play? – Mel
Eso es exactamente lo que hace este código: si la versión será la nueva, sabrá que el usuario decidió hacer una actualización – Phate
No es una manera realmente bonita de hacer las cosas, pero también podría comenzar a almacenar la versión actual en el Preferencias compartidas, y cuando no coincide con la versión real de su aplicación (que se muestra arriba, cómo obtenerla), también puede hacer algo. –