gpt4 book ai didi

android - 异常 : Can't start async operation (refresh inventory) because another async operation(launchPurchaseFlow) is in progress

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:39:35 27 4
gpt4 key购买 nike

是的,这个问题有两个常见的答案:

一:在开始异步操作之前调用 billingHelper.flagEndAsync(); 的 hack。这通常被认为是不推荐的,并且在许多情况下并不能解决问题。

二:在Activity的onActivityResult中调用IabHelper的handleActivityResult方法。这个解决方案的问题(除了我不理解这个方法的目的)是在我的应用程序中,应用程序内的计费操作是在应用程序的应用程序类中完成的,因为应用程序中有一堆用户可能触发的 Activity 应用内购买,以及应用需要查询应用内购买库存的多个可能的入口点。所以我试着把:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (!MyApplication.myAppInstance.mHelper.handleActivityResult(requestCode, resultCode, data))
super.onActivityResult(requestCode, resultCode, data);
}

进入用户可能开始购买的每个 Activity ,但这并没有解决崩溃问题。我真的不明白这个 onActivityResult 东西的目的,所以我可能误解了它应该如何实现。为什么 Google 无论如何都要强制我从 Activity 中进行应用内结算操作?

最佳答案

我遇到了类似的问题。不幸的是,IabHelper 代码不是很好……它大部分都很好,但线程模型有点困惑,这意味着如何正确处理边缘情况可能会变得困惑。

摆脱崩溃的一种简单方法是简单地用 if 语句检查包装方法调用,例如:

if (!mHelper.isAsyncInProgress()) {
mHelper.launchPurchaseFlow(...);
}

更好的解决方案是从头开始重写 IabHelper 代码……但在这种特殊情况下,异常很少发生,因此可能不值得这样做。不幸的是,在这种情况下没有简单的解决方法...IabHelper 示例代码不是最好的,我们大多数人都会决定接受它。

关于android - 异常 : Can't start async operation (refresh inventory) because another async operation(launchPurchaseFlow) is in progress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26349263/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com