не используйте Flow.just(isPayable())
- он может не выполняться в планировщике вычислений. либо используйте Flow.defer(()->Flow.just(isPayable()))
, либо
Flow.fromCallable(() ->isPayable() )
и в результате:
Flow.fromCallable(() ->isPayable() )
.flatMap(value->
if(value){ doSomething1() }else { doSomething2() }
.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({},{})
)
в качестве альтернативы, если вы выполните doSomething1 () / doSomething2 (), сделайте некоторые вещи пользовательского интерфейса , вы также можете пометить isPayable () == false как ошибку, для этого: Single.fromCallable (() -> isPayable ()) .map {value-> if (value) return value else throw Exception ("not payable" )} .subscribeOn (Schedulers.computation ()) .observeOn (AndroidSchedulers.mainThread ()) .subscribe ({doSomething1 ()}, {doSomething2 ()})