Почему Rxjava2 вызывает исключение после вызова композитногоDisposable.clear? - PullRequest
0 голосов
/ 06 мая 2020
• 1000

Проблема в том, что RxJava2 вызывает java. net .SocketException: Socket closed после того, как я вызываю CompositeDisposable.clear () . Однако я должен это сделать, потому что в противном случае сетевой запрос может быть инициирован, когда приложение находится в фоновом режиме, и это автоматически вызовет другие исключения, , потому что вы не можете создавать сетевые запросы, когда приложение находится в фоновом режиме .

Как мне вызвать CompositeDisposable.clear () без фактического распределения сетевого запроса?

Вот мой поток:

CompositeDisposable.add(observeWhenYouCanInitiateRequest().
            subscribeOn(Schedulers.io())

            .flatMap { _ ->
               //this one is canceled if I would call CompositeDisposable.clear()
                otherUseCase.execute()

            }

            .observeOn(AndroidSchedulers.mainThread())
            .subscribe({

            },{

            }))
}

А вот метод наблюденияWhenYouCanInitiateRequest:

 fun observeThenToStartProcessing(): Observable<Boolean> {
    return Observable.zip(firstTriggerSubject, secondTriggerSubject, 
            thirdTriggerSubject,
            Function3<Boolean, Boolean, Boolean, Boolean> { firstTriggerSubject, secondTriggerSubject,
                                                               thirdTriggerSubject ->
      //returning required condition
       return firstTriggerSubject&&secondTriggerSubject&&thirdTriggerSubject


            })
}
...