Я разрабатываю приложение android с использованием Kotlin и Rx Java.
. Я разработал биллинг в приложении с использованием android новейшего API.
Но библиотека поддерживает только асин c обратный вызов.
Поэтому я делаю код вроде:
private fun consumePlayStore(consumeParams: ConsumeParams, secKey: String, purchase: Purchase): Single<Pair<String, Purchase>> {
return Single.create<Pair<String, Purchase>> { emitter ->
Log.d("TEST", "[Billing] consumePlayStore") // IO Thread
// Google InApp Library call
playStoreBillingClient?.consumeAsync(consumeParams) { result, _ ->
// In here, thread is Main!!! Why!!!
Log.d("TEST", "[Billing] consumePlayStore - response") // Main Thread
}
}
}
fun consume() {
verifyCompletable.andThen(consumePlayStore())
.flatMap(otherJob)
.subscribeOn(ioScheduler)
.observeOn(uiScheduler)
.subscribe()
}
Я не знаю, почему поток изменяется в обратном вызове?
Кто-нибудь, скажите мне, почему?
И как я могу решить эту проблему ???
или лучший дизайн ???