sql >> Base de Datos >  >> RDS >> SQLite

onCreate() de RoomDatabase.Callback() no se llamó después de una llamada exitosa a .build()

La razón por la que OnCreate no se llama porque solo se llama una vez cuando se crea la base de datos por primera vez y nunca más mientras exista la base de datos.

Si elimina los datos de la aplicación o la desinstala y luego la vuelve a ejecutar, verá que onCreate entonces se llama.

p.ej.

private void BuildDatabase() {
   RoomDatabase.Builder roombuilder = Room.databaseBuilder(this, Database.class,"mydb");
   roombuilder.addCallback(new RoomDatabase.Callback() {
       @Override
       public void onCreate(@NonNull SupportSQLiteDatabase db) {
           super.onCreate(db);
           Log.d("ONCREATE","Database has been created.");
       }

       @Override
       public void onOpen(@NonNull SupportSQLiteDatabase db) {
           super.onOpen(db);
           Log.d("ONOPEN","Database has been opened.");
       }
   });
   mRoomDB = (Database) roombuilder.build();
}

Después de eliminar los resultados de los datos de la aplicación:-

2018-12-20 06:36:23.045 2271-2287/so53839431.so53839431roomrelationship D/ONCREATE: Database has been created.
2018-12-20 06:36:23.055 2271-2287/so53839431.so53839431roomrelationship D/ONOPEN: Database has been opened.