11

以下是步骤:

  1. 构建并运行 InApp V3 示例 Trivial Drive 示例
  2. 选择购买选项
  3. 点击后退按钮
  4. 再次尝试购买

在截至 2013 年 1 月的版本中,您可能会收到

无法启动异步操作 (launchPurchaseFlow),因为另一个异步操作 (launchPurchaseFlow) 正在进行中。

然后你不能使用 IabHelper 类的购买或库存方法,因为异步标志不会清除,除非你杀死你的应用程序。

这是一个可能的解决方案:

我公开了 flagEndAsync 方法并在 onRestart 方法中调用它。问题是:这是一个安全的解决方案吗?还有其他人看过这个问题吗?

这是我添加的内容:

protected void onRestart() {
    super.onRestart();
    if (mHelper != null) mHelper.flagEndAsync();
}
4

1 回答 1

37

您确定您没有删除以下代码(或忘记添加到您的活动中)

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // Pass on the activity result to the helper for handling
        if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
            // not handled, so handle it ourselves (here's where you'd
            // perform any handling of activity results not related to in-app
            // billing...
            super.onActivityResult(requestCode, resultCode, data);
        }
    }
于 2013-01-21T13:58:07.627 回答