根据https://developer.android.com/google/play/billing/integrate https://developer.android.com/google/play/billing/integrate the billingClient.querySkuDetails
被称为withContext(Dispatchers.IO)
fun querySkuDetails() {
val skuList = ArrayList<String>()
skuList.add("premium_upgrade")
skuList.add("gas")
val params = SkuDetailsParams.newBuilder()
params.setSkusList(skuList).setType(SkuType.INAPP)
val skuDetailsResult = withContext(Dispatchers.IO) {
billingClient.querySkuDetails(params.build())
}
// Process the result.
}
我很好奇它能带来什么好处querySkuDetails
已经是一个暂停函数。那么我在这里能得到什么。
我可以编写相同的代码
val skuDetailsResult = coroutineScope {
billingClient.querySkuDetails(params.build())
}
没有更多的上下文,我不知道如何下载计费客户端的源代码。
被调用的底层方法是querySkuDetailsAsync
它接受回调并异步执行网络请求。
你是对的withContext(Dispatchers.IO)
那里不需要,它实际上引入了不必要的开销。
取自https://stackoverflow.com/a/62182736/6167844 https://stackoverflow.com/a/62182736/6167844
这似乎是一个常见的误解,因为 IO 是由挂起函数执行的,所以您必须在 Dispatchers.IO 中调用它,这是不必要的(并且可能很昂贵)。
按照惯例,挂起函数不会阻塞调用线程,并在需要时在 Dispatchers.IO 中内部阻塞。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)