Является ли База данных комнаты запросов asyn c? И если да, то из-за отсутствия лучшего термина что-то подобное этому условию асинхронности / расы безопасно?
fun insertThingAsync(thing: Thing) = async(Dispatchers.IO) {
try {
dao.deleteAllThings()
dao.insertThing(thing)
}
catch (e: Throwable) {
// Stuff
}
}
Другими словами, возможно ли в этом случае для dao
попытаться вставьте thing
до завершения dao.deleteAllThings()
, и, следовательно, есть шанс удалить только что вставленный thing
?
Если да, то каким образом вы все обрабатываете подобные вещи, чтобы убедиться, что вы делаете не пытаетесь вставить, пока удаление не будет завершено?
Мне также интересно узнать об одном и том же сценарии использования с roomDatabase.clearAllTables
из-за разговоров в этой теме .