【发布时间】:2026-01-21 17:40:01
【问题描述】:
我已改用 Google 计费客户端 4.0 库。从那以后购买完成后,我的 ui 元素更新不起作用。
我试图检查它们是否不再在 UThread 中或其他什么,但它仍然无法正常工作。
billingClient!!.acknowledgePurchase(
acknowledgePurchaseParams
) { billingResult ->
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
saveSubscription(purchase.purchaseToken, sku)
mainAct?.runOnUiThread {
Toast.makeText(context , "Vásárlás sikeres", Toast.LENGTH_SHORT)
.show()
delegate?.purchaseSuccess(
actProduct,
prevProduct,
purchase.purchaseToken
)
}
}
}
确认完成后,我的 UI 元素应该会更新。应该启用一个菜单项,并且在购买页面中,一个文本字段应该显示该项目已购买。代码正在运行,但 UI 元素未更新。
一旦我移动到不同的片段,菜单项就会变为启用,所以在我看来,UI 没有刷新。
在代码中 mainAct 是 MainActivity 的上下文。
有什么想法吗?
代码在 Billing 库 3.0.3 上正常运行,并且根本不需要 runOnUIThread。
这个库仍然有奇怪的行为。在我的用户登录应用程序并从登录页面转到第一个片段的同时,我正在设置帐单。这个片段有一个 recyclerview,这个 recycler 视图充满了来自网络的数据。回收器视图随机不显示元素,即使它们已加载并且适配器已正确更新。
您移动到另一个片段并返回回收站视图正确显示数据。
正如我所说,第一次调用计费服务器时,UIThread 被搞砸了,即使更新了数据标签或菜单,也没有显示更新。
所以这个库肯定有问题。
有什么想法吗?
【问题讨论】:
标签: kotlin ui-thread google-play-billing