Причината за OnCreate не се извиква, защото се извиква само веднъж при първото създаване на базата данни и след това никога повече, докато базата данни съществува.
Ако изтриете данните на приложението или деинсталирате приложението и след това го стартирате отново, ще видите, че onCreate след това се извиква.
напр.
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();
}
След изтриване на данните на приложението води до:-
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.