Я загружаю 10 объектов данных с помощью Retrofit и сохраняю их в Room с помощью RxJava в приложении для Android. Я делаю это в SplashActivity. После того, как загружен хотя бы один объект, я сохраняю его в комнате и хочу открыть 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), я должен dispose
мои наблюдаемые в моем onDestroy()
методе. Но я не хочу распоряжаться, так как я хочу, чтобы эта служба продолжала работать до тех пор, пока она не закончит загрузку всех объектов.