我正在使用Google教程推荐的IabHelper
实用程序类,但这个错误对我造成了严重的打击。显然IabHelper
不能同时运行多个异步操作。我什至设法通过在库存盘点过程中开始购买来实现目标。
我已经尝试在主类中按照建议的here实现onActivityResult
,但是在出现错误之前,我什至没有得到对该方法的调用。然后我找到了this,但是我不知道在哪里可以找到这个flagEndAsync
方法-它不在IabHelper
类中。
现在,我正在寻找解决此问题的方法(而无需重新实现整个功能)。我能想到的唯一解决方案是创建一个 bool 字段asyncActive
,在启动异步任务之前检查该字段,如果有另一个任务处于 Activity 状态,则不执行此操作。但这还有许多其他问题,并且不适用于所有 Activity 。另外,我更希望有一个异步任务队列并在允许的情况下尽快运行,而不是根本不运行。
这个问题有什么解决办法吗?
最佳答案
一个简单棘手的解决方案
在调用 PurchaseItem 方法之前,只需添加此行
if (billingHelper != null) billingHelper.flagEndAsync();
所以你的代码看起来像这样
if (billingHelper != null) billingHelper.flagEndAsync();
purchaseItem("android.test.purchased");
注意:如果您从另一个包中调用它,请不要忘记在IabHelper中公开public flagEndAsync()方法。