ऑनक्रिएट . का कारण नहीं कहा जा रहा है क्योंकि इसे केवल एक बार बुलाया जाता है जब डेटाबेस पहली बार बनाया जाता है और तब तक फिर कभी नहीं होता जब तक डेटाबेस मौजूद होता है।
यदि आप ऐप का डेटा हटाते हैं या ऐप को अनइंस्टॉल करते हैं और फिर इसे फिर से चलाते हैं तो आप देखेंगे कि ऑनक्रिएट तब कहा जाता है।
जैसे
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.