SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

onCreate() de RoomDatabase.Callback() não foi chamado após uma chamada bem-sucedida para .build()


A razão pela qual OnCreate não está sendo chamado é porque ele é chamado apenas uma vez quando o banco de dados é criado pela primeira vez e nunca mais enquanto o banco de dados existir.

Se você excluir os dados do aplicativo ou desinstalar o aplicativo e executá-lo novamente, verá que onCreate é então chamado.

por exemplo.
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();
}

Depois de excluir os dados do aplicativo resulta em:-
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.