如何在 Room 方法中用 RxJava 替换 AsyncTask?

How do I replace AsyncTask with RxJava in Room methods?

我有一个使用 AsynctaskRoom 数据库中设置新项目的插入方法。我可以去掉 InsertContactAsyncTask class 并改用 RxJava 吗?我在网上找不到这样的例子

方法insert:

override fun insert(contact: Contact) {
        InsertContactAsyncTask().execute(contact)
}

AsyncTask class:

class InsertContactAsyncTask: AsyncTask<Contact, Unit, Unit>() {

        private val contactDao: ContactDao? = null

        override fun doInBackground(vararg param: Contact) {
            contactDao?.insert(param[0])
        }
}
override fun insert(contact: Contact) {
    Single.fromCallable { contactDao.insert(contact) }
          .subscribeOn(Schedulers.io())
          .subscribe()
}
fun insert(contact:Contact) : Completable

然后在某个地方调用这个方法

contactDao.insert()
.subscribeOn(Schedulers.IO)
.observeOn(AndroidSchedulers.Main)
.subscribe{Log.d("test","insertcompleted")
//do something when insert completed
}

或者像这样将插入插入可完成的

fun insertCompletable(contact:Contact){
Completable.fromAction{contactDao.insert}
}

和之前一样订阅

覆盖插入方法并通过订阅接收回调:-

override fun insert(contact: Contact) {
Single.fromCallable { //Insert Query here }
      .subscribeOn(// thread )
      .subscribe()

}