У меня есть BehaviourSubject в качестве обратного вызова для моего метода Retrofit.
private val loadCompleted = BehaviourSubject.create<List<String>>()
Внутри моей модификации OnResponse / onFailure я звоню
loadCompleted.onNext(myList) //inside retrofit onResponse and
loadCompleted.onError("Error") // inside retrofit onFailure
Я подписан на функцию, которая возвращает loadCompleted.
fun loadingCompleted() : Observable<List<String>>{return loadCompleted}
и затем я подписываюсь на загрузку, завершенную как
loadingCompleted.subscribe{list ->
//only called once
anotherfun(list)
}
В первый раз, когда вызывается моя функция Retrofit, я могу вызвать подписку, но последующие вызовы той же функции не вызывают подписку. Я предполагаю, что вызовы обычно возвращают одно и то же значение, потому что это просто обновление и данные могут не измениться. Тем не менее, мне все еще нужно вызвать подписку, чтобы я мог реагировать соответственно. Я пробовал и BS и ReplaySubject, но результат тот же. Как я могу использовать observable, чтобы гарантировать, что подписчик всегда вызывается всякий раз, когда я вызываю onNext (x) / onComplete (x), даже если x не изменился?