为什么线程在回调中更改为主线程?

问题描述 投票:0回答:1

我正在使用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开发了应用内结算。但是该库仅支持异步回调。因此,我编写了如下代码:私人娱乐...

android kotlin rx-java
1个回答
0
投票

我找到了原因和解决方法。

© www.soinside.com 2019 - 2024. All rights reserved.