SQLite
 sql >> Datenbank >  >> RDS >> SQLite

onCreate() von RoomDatabase.Callback() wurde nach einem erfolgreichen Aufruf von .build() nicht aufgerufen

Der Grund, warum OnCreate wird nicht aufgerufen, weil es nur einmal aufgerufen wird, wenn die Datenbank zum ersten Mal erstellt wird, und dann nie wieder, solange die Datenbank existiert.

Wenn Sie die Daten der App löschen oder die App deinstallieren und dann erneut ausführen, sehen Sie, dass onCreate wird dann aufgerufen.

z.B.

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

Nach dem Löschen der Daten der App ergibt sich :-

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.