我正在使用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()方法。

10-05 17:49