【发布时间】:2019-07-11 07:36:05
【问题描述】:
此方法运行数据库操作(返回生成的 ID)并且必须在后台线程上:
fun insert(note: Note): Long{
return noteDao.insert(note)
}
有没有办法使用 RX / Coroutines 来实现它? (不使用suspend 关键字)
我目前使用 AsyncTask:
override fun insert(note: Note): Long {
return InsertTask(this, noteDao).execute(note).get()
}
private class InsertTask(noteRepository: NoteRepository, private val noteDao: NoteDao) : AsyncTask<Note, Void, Long>() {
override fun doInBackground(vararg note: Note): Long {
return noteDao.insert(note[0])
}
override fun onPostExecute(generatedId: Long) {
getTheId(generatedId)
}
private fun getTheId( id: Long): Long {
return id
}
}
【问题讨论】:
-
那么应该是Rx,还是协程?
-
两者都可能,但我找到并编写了 Rx 解决方案。
标签: android android-asynctask rx-java2 android-room kotlin-coroutines