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.