Powód, dla którego OnCreate nie jest wywoływana, ponieważ jest wywoływana tylko raz, gdy baza danych jest tworzona po raz pierwszy, a potem nigdy więcej, dopóki baza danych istnieje.
Jeśli usuniesz dane aplikacji lub odinstalujesz aplikację, a następnie uruchomisz ją ponownie, zobaczysz, że onCreate jest wtedy wywoływana.
np.
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();
}
Po usunięciu danych aplikacji :-
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.