Android Realm número de versión de migración basado en qué?

Estoy haciendo mi primera migración de Realm y comencé a pensar en el número de versión. ¿En qué se basa este número de versión?

Porque si se basa en lo que hay en tu teléfono, ¿cómo lo manejo si una nueva persona instala la aplicación y recibe una migración? Porque también actualizará los campos que ya están establecidos debido a una nueva instalación.

Cristiano de Reino aquí. La API de migración todavía está en un estado muy experimental y un poco fea, por lo que ahora mismo el número de versión siempre comienza con 0, y la única manera de cambiar eso es a través de una migración.

Esto significa que si desea una nueva instalación con una versión diferente de 0, tendrá que hacer algo como:

// Pseudo code public class RealmHelper() { private static SharedPreferences prefs; public static Realm getInstance() { if (!prefs.getBoolean("versionSet", false)) { String path = new File(context.getFilesDir(), Realm.DEFAULT_REALM_NAME).getAbsolutePath(); Realm.migrateRealmAtPath(path, new RealmMigration() { @Override public long execute(Realm realm, long version) { return 42; // Set version numbers } }) prefs.edit().putBoolean("versionSet", true).apply(); } return Realm.getInstance(); } } 

Esto va a ser mucho mejor pronto sin embargo: https://github.com/realm/realm-java/pull/929

Las migraciones de reino en 0.84.2 se han cambiado bastante (ver la sugerencia de Christian sobre la nueva API), los puntos clave para hacer que el trabajo de migración de un reino (0.84.2) fuera para mí era entender que:

  • La schemaVersion siempre es 0 cuando la aplicación tiene un db de dominio sin especificar schemaVersion. Lo que es cierto en la mayoría de los casos, ya que probablemente empiece a usar schemaVersion en la configuración una vez que necesite migraciones y ya está ejecutando una versión en vivo de su aplicación.

  • La schemaVersion se almacena automáticamente y cuando se produce una nueva instalación de su aplicación y ya está en schemaVersion 3, el reino verifica automáticamente si hay excepciones, si no, establece la schemaVersion en 3 para que sus migraciones no se ejecuten cuando no se necesitan. Esto también meens usted no tiene que almacenar nada más en SharedPreferences.

  • En la migración usted tiene que fijar todos los valores de nuevas columnas cuando el tipo no es nullable, versión actual del reino, …

  • Las cadenas vacías se pueden insertar pero sólo cuando se establece convertColumnToNullable en la columna

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.