【发布时间】:2019-04-02 15:37:08
【问题描述】:
我正在使用 Retrofit 下载 10 个数据对象,并在 Android 应用程序中使用 RxJava 将其保存到 Room。我在 SplashActivity 中执行此操作。至少下载一个对象后,我将其保存到 Room 并希望打开 HomeActivity 并让剩余的 9 个对象继续下载。我该怎么做?
这是我目前的表现
for (i in 1 until 10) {
MyService().getObject(i, object : Callback<MyObject> {
override fun onFailure(call: Call<MyObject>, t: Throwable) {
t.printStackTrace()
}
override fun onResponse(call: Call<MyObject>, response: Response<MyObject>) {
if (response.isSuccessful) {
val result = response.body()!!.data
Observable.fromCallable{
objectDao.insert(Object(result))}
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnComplete {if (i == 1) startHomeActivity()}
.subscribe()
}
}
})
}
现在我的第一个问题是,应用程序在打开 HomeActivity 时崩溃。我想这是因为活动不再活跃但可观察到的事实正在发挥作用。我无法解决这个问题。
我的第二个问题是,使用disposables。据我所知(我对 RxJava 知之甚少),我必须在我的 onDestroy() 方法中 dispose 我的 observables。但我不想处理,因为我希望此服务继续运行,直到它完成所有对象的下载。
【问题讨论】:
标签: retrofit rx-java rx-java2 android-room rx-android