我正在使用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
时App崩溃了。我认为是由于活动不再有效,但可以观察到的事实所致。我无法解决此问题。
我的第二个问题是使用disposables
。据我了解(对RxJava不太了解),我必须在dispose
方法中onDestroy()
观察到。但是我不想处理,因为我希望该服务继续运行,直到完成所有对象的下载为止。
答案 0 :(得分:0)
显然,我只需要使用Service
并在service中运行我的工作,以便每当活动关闭时,service仍在运行。