С сопрограммами это довольно просто. Но вам потребуется поддержка сопрограмм для Room
.
Зависимость Gradle:
implementation "androidx.room:room-ktx:2.1.0"
Далее отметьте ваши методы в dao как приостановленные.
@Insert
suspend fun insert(note: Note): Long
Я не знаю, сколько у вас информации о сопрограммах, но это выглядит так:
aCoroutineScope.launch(Dispatchers.IO){
//to make analogy you are inside the do in backgroun here
val id = dao.insert(note)
withContext(Dispatchers.Main){
//oh well you can call this onPostExecute :)
//do whatever you need with that selectId here
handleIdOnTheMainThread(id)
}
}
Но я настаиваю на том, чтобы не использовать его с нулевой информацией о сопрограммах.
О RxJava:
Комната также поддерживает Rx, поэтому, пожалуйста, обратитесь к этой ссылке .