Я просто хочу выполнить запрос, когда моя база данных открывается. Есть ли способ добиться этого с помощью комнаты, я имею в виду правильный способ выполнить оператор sql перед загрузкой репозитория и все вещи со страховкой, что все будет синхронизировано?
Здесь вы можете найти мой код.
public static synchronized AppDatabase getInstance(final Context context) {
if (sInstance == null) {
sInstance = Room
.databaseBuilder(context.getApplicationContext(), AppDatabase.class, context.getResources().getString(R.string.app_database))
.allowMainThreadQueries()
.addCallback(new RoomDatabase.Callback() {
@Override
public void onCreate(@NonNull SupportSQLiteDatabase db) {
super.onCreate(db);
}
@Override
public void onOpen(@NonNull SupportSQLiteDatabase db) {
super.onOpen(db);
// query execution
executeUpdate(db);
}
@Override
public void onDestructiveMigration(@NonNull SupportSQLiteDatabase db) {
super.onDestructiveMigration(db);
}
})
.build();
}
return sInstance;
}
Там вы можете найти детали моего запроса. Нужно ли вкладывать деньги в транзакцию или нет?
private static void executeUpdate(SupportSQLiteDatabase db){
try {
db.beginTransaction();
db.execSQL("UPDATE .....");
db.setTransactionSuccessful();
db.endTransaction();
}
catch (Exception e){
}
}
Спасибо за помощь!