Android: Google 钱包购买后如何处理labHelper

Android: How to dispose labHelper of Google Wallet after purchase

我正在集成 Google 钱包并在 buying.Normally 开始时启动 labHelper labHelper 开始于activity onCreatedispose 的时间 activity onDestroy ].因此,即使我们不使用钱包服务,labHelper 也会在 activity onCreate 时启动。

所以我试图在开始购买时启动 labHelper 并在 labhelperPurchase 完成侦听器中进行配置。 purchasing.But 金钱转移也发生在那里后,我得到一个异常。

一次购买后,当我尝试购买第二次时,它显示“TRANSACTION FAILED

LabHelper 初始化

 mHelper = new IabHelper(FrendyActivity.this, base64EncodedPublicKey);

    mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
        public void onIabSetupFinished(IabResult result) {
            Log.d(TAG, "Setup finished.");
            // Have we been disposed of in the meantime? If so, quit.
            if (mHelper == null)
                return;

            if (!result.isSuccess()) {
                Log.d(TAG, "In-app Billing setup failed: " + result);
            } else {
                Log.d(TAG, "In-app Billing is set up OK");
            }
        }

    });

购买后这是处理代码

   mHelper.launchPurchaseFlow(FrendyActivity.this,
            SkuItem, code,
            mPurchaseFinishedListener, type);


     IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new                    IabHelper.OnIabPurchaseFinishedListener() {
    public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
  if (mHelper != null)
        mHelper.dispose();
    mHelper = null

dealWithPurchaseSuccess(result, purchase);
}

购买一次后,当我尝试再次购买产品时出现错误 labHelper 已经启动

labHelper购买后如何正确处置?

简单回答:购买后不应丢弃 iabHelper。 API 不是那样设计的。

您甚至不应该尝试在 onCreate 和 onDestroy 以外的方法中启动和停止 API。但是如果你真的想要它并且你选择这样做首先创建一个新的 iabhelper 实例,不要重复使用它。

但是我建议你去掉 onIabPurchaseFinished 中的 dispose 调用,只在 onDestroy 方法中调用它。