Повторное редактирование: я буду использовать результат этого метода для инициализации видимости некоторых кнопок в моем представлении
Принятый ответ кажется хорошим в теории, но возвращаемое значение первого метода - Flowable> вместо Flowable. Поэтому я не могу передать его в качестве параметра для подписки, так как для него требуется Flowable, но это Flowable>
Вопрос перед редактированием
Я использую RxJava для наблюдения за методом, который мне необходимо вызвать из SDK. Используя этот метод, я пытаюсь сделать утверждение о существовании чего-либо, но я не знаю, сколько времени займет вызов, поэтому мне трудно сказать, прекратить подписку через x секунд.
override fun doesExist(): Boolean {
var doesExist = false
var subscription : Subscription
val flowable = Flowable.just(SDK.searchContact("contact"))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : FlowableSubscriber<Flowable<List<Contact>>> {
override fun onSubscribe(s: Subscription) {
subscription = s
}
override fun onNext(t: Flowable<List<Contact>>?) {
doesExist = true
}
override fun onComplete() {
Log.d("tagtagcomplete", "tagtagcomplete")
}
override fun onError(e: Throwable?) {
Log.d("tagtagerror", "tagtagerror")
}
return doesExist
}
Итак, я хочу вернуть true, если я не получу никакого результата из метода searchContract, и вернуть false, если я получу результат. Используя observables, я могу создать объект подписки и вызвать его методы, но я не мог понять, как сделать это правильно с помощью flowables.
Моя путаница заключается в следующем: метод для sdk возвращает Flowable<List<Contact>>>
, но, по моему мнению, мне нужно проверить, существует ли контакт только один раз, и остановить
Прямо сейчас мой метод не идет внутри onError, onNext или onComplete. Он просто возвращает IsExist