У меня есть серия последовательных сетевых вызовов Parse, которые все зависят друг от друга, чтобы сохранить конечный объект, завернутый в Observable, чтобы я мог обрабатывать все как один вызов в моем докладчике.
Еслипользователь решает изменить фрагменты или покинуть приложение или что-то подобное, этот сетевой вызов достаточно важен, и я бы хотел, чтобы он попытался его завершить.
Если я вызову disables.s.dispose (), наблюдаемое выдаст ошибку(который я могу поймать) в следующем методе .save в Observable, и сетевой вызов не завершается.
Если я не избавлюсь от него, сетевой вызов завершится, но он вызовет мой onComplete ивыдать ошибку, так как представление исчезло.Я могу предотвратить возникновение этой ошибки, но потом я переживаю, что создал утечку памяти.
Мне все равно, будет ли вызван oncomplete / onerror, если пользователь попадет в эту ситуацию, но яхотел бы убедиться, что он завершается тем или иным способом.
Есть ли способ разрешить завершение вызова, но не вызвать утечку памяти, не удаляя его?
fun doParseNetworkCall(){
return Observable.create<Boolean> { emitter ->
createParseObject1
createParseObject1.save()
createParseObject2
createParseObject2.add(key, createParseObject1)
createParseObject2.save()
createParseObject3
createParseObject3.add(key, createParseObject2)
createParseObject3.save()
emitter.onNext(true)
}
fun doNetworkCall(){
repo.doParseNetworkCall()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io()).subscribeBy(
onError = { error ->
//do something
},
onComplete = {
//do something
}
).addTo(disposable)
}