【发布时间】:2020-01-14 11:58:28
【问题描述】:
我有一个来自 API 的单一 GET 请求。使用Retrofit 和RxJava,我得到了回复。现在我想将我的回复添加到Room 数据库。但我不想使用AsyncTask 我想使用RxJava。我在Dao insertAll中准备了一个方法。如何使用RxJava 将我的列表异步添加到数据库中?
我的获取请求:
@GET("contacts")
fun getContactModel(): Single<List<Contact>>
我的道insertAll方法:
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertAll(contact: List<Contact>?) : Completable
我使用 RxJava 的请求:
val disposable = CompositeDisposable()
disposable.add(contactsRepository.modelSingle()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(object : DisposableSingleObserver<List<Contact>>() {
override fun onSuccess(t: List<Contact>) {
// t - My List from Api
}
override fun onError(e: Throwable) {
}
})
)
【问题讨论】:
-
是的,当您从 web api 接收数据时,您可以保留公共 POJO 类并触发插入查询
-
您可以使用map操作符,然后将所有数据插入db中
-
我不知道该怎么做。网上没有例子
标签: android kotlin rx-java2 android-room