Android mHelper.launchPurchaseFlow启动两次

Android mHelper.launchPurchaseFlow启动两次,android,Android,对于购买,我有代码 public void onClick(View v) { // FIRST CHECK IF THE USER IS ALREADY A SUBSCRIBER. mHelper.launchPurchaseFlow(SubscribeIntroActivity.this, SUBSCRIBE_SKU, RC_REQUEST, mPurchaseFinishedListener); } public

对于购买,我有代码

 public void onClick(View v) 
 {              
       // FIRST CHECK IF THE USER IS ALREADY A SUBSCRIBER.
       mHelper.launchPurchaseFlow(SubscribeIntroActivity.this, SUBSCRIBE_SKU, RC_REQUEST, mPurchaseFinishedListener);    
 }


 public void onClick(View v) 
 {              
       // FIRST CHECK IF THE USER IS ALREADY A SUBSCRIBER.
       mHelper.launchPurchaseFlow(SubscribeIntroActivity.this, SUBSCRIBE_SKU, RC_REQUEST, mPurchaseFinishedListener);    
 }

IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
    public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
        Log.d(TAG, "Purchase finished: " + result + ", purchase: " + purchase);

        // if we were disposed of in the meantime, quit.
        if (mHelper == null) return;

        if (result.isFailure()) {
            Log.d(TAG,"Error purchasing: " + result);

            return;
        }
        if (!verifyDeveloperPayload(purchase)) {
            Log.d(TAG,"Error purchasing. Authenticity verification failed.");

            return;
        }

        Log.d(TAG, "Purchase successful.");

        if (purchase.getSku().equals(SKU_PREMIUM)) {
            // bought the premium upgrade!
            Log.d(TAG, "Purchase is premium upgrade. Congratulating user.");
            Log.d(TAG,"Thank you for upgrading to premium!");
            mIsPremium = true;
            isShortVersion=false;
            DrawIsShortVersion();
        }

        }
    };
日志中的错误为

 Caused by: java.lang.IllegalStateException: Can't start async operation (launchPurchaseFlow) because another async operation(launchPurchaseFlow) is in progress.
当我点击按钮打开买方对话框时,我可以毫无问题地购买,但如果我点击按钮对话框打开,在设备上按下硬件按钮(未购买),我看到第一个活动是按钮购买,再次按下按钮购买并引发错误。也许有人知道这个错误?我做错了什么

。。。添加了if(mHelper!=null)mHelper.flangendasync();在调用launchPurchaseFlow之前,现在没有错误,但是mHelper.flagEndAsync();杀死previos任务?

您可以发布日志吗? 在大多数情况下,当异步PurcaseFlow正在运行,而您尝试运行另一个Purcase时,会发生错误。 你在Purcase Listener中做什么

编辑:您有多个线圈可用于:

第一:创建全局布尔->MTASKISRUNING

private void doBuyProduct(int id){
  if(!mTaskIsRunning){
    mHelper.launchPurchaseFlow(SubscribeIntroActivity.this, SUBSCRIBE_SKU, RC_REQUEST, mPurchaseFinishedListener);  
   mTaskIsRunning=true;
}
}
然后在你的听众中:

或者,您可以在任务运行时禁用按钮 同样的程序:

private void doBuyProduct(int id){
      disableBuyButtons();
        mHelper.launchPurchaseFlow(SubscribeIntroActivity.this, SUBSCRIBE_SKU, RC_REQUEST, mPurchaseFinishedListener);  


    }
在FinishListener中:

enableButtons();
enableButtons();