Следующий код взят из проекта Architecture-components-samples, вы можете увидеть it .
Автор использует фоновый поток для вставки или удаления данных.
Почему автор не использует сопрограммы при вставке или удалении данных с помощью Room?
CheeseViewModel. кт
class CheeseViewModel(app: Application) : AndroidViewModel(app) {
...
fun insert(text: CharSequence) = ioThread {
dao.insert(Cheese(id = 0, name = text.toString()))
}
fun remove(cheese: Cheese) = ioThread {
dao.delete(cheese)
}
}
Executors.kt
private val IO_EXECUTOR = Executors.newSingleThreadExecutor()
/**
* Utility method to run blocks on a dedicated background thread, used for io/database work.
*/
fun ioThread(f : () -> Unit) {
IO_EXECUTOR.execute(f)
}