我正在使用Kotlin和RxJava开发一个Android应用程序。
我使用android最新的API开发了应用内结算。
但是该库仅支持异步回调。
所以我编写了类似的代码:
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()
}
我不知道为什么在回调中更改了线程?
有人告诉我为什么?
我该如何解决这个问题?
或更好的设计???
我正在使用Kotlin和RxJava开发一个android应用。我使用android最新API开发了应用内结算。但是该库仅支持异步回调。因此,我编写了如下代码:私人娱乐...
我找到了原因和解决方法。