La raison pour laquelle OnCreate n'est pas appelé, c'est parce qu'il n'est appelé qu'une seule fois lorsque la base de données est créée pour la première fois, puis plus jamais tant que la base de données existe.
Si vous supprimez les données de l'application ou désinstallez l'application, puis la réexécutez, vous verrez que onCreate est alors appelé.
par exemple.
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();
}
Après avoir supprimé les résultats de données de l'application :-
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.