1

我正在尝试在 app billing v3 中使用 android,并且我的应用程序崩溃并出现以下错误 Can't start async operation (consume) because another async operation(consume) is in progress

堆栈跟踪如下

02-25 16:56:54.811: E/AndroidRuntime(6913): FATAL EXCEPTION: main
02-25 16:56:54.811: E/AndroidRuntime(6913): java.lang.IllegalStateException: Can't start async operation (consume) because another async operation(consume) is in progress.
02-25 16:56:54.811: E/AndroidRuntime(6913):     at com.seven.BillingHelper.IabHelper.flagStartAsync(IabHelper.java:711)
02-25 16:56:54.811: E/AndroidRuntime(6913):     at com.seven.BillingHelper.IabHelper.consumeAsyncInternal(IabHelper.java:832)
02-25 16:56:54.811: E/AndroidRuntime(6913):     at com.seven.BillingHelper.IabHelper.consumeAsync(IabHelper.java:623)
02-25 16:56:54.811: E/AndroidRuntime(6913):     at com.seven.javalib.InAppBilling$15.run(InAppBilling.java:350)
02-25 16:56:54.811: E/AndroidRuntime(6913):     at android.os.Handler.handleCallback(Handler.java:587)
02-25 16:56:54.811: E/AndroidRuntime(6913):     at android.os.Handler.dispatchMessage(Handler.java:92)
02-25 16:56:54.811: E/AndroidRuntime(6913):     at android.os.Looper.loop(Looper.java:143)
02-25 16:56:54.811: E/AndroidRuntime(6913):     at android.app.ActivityThread.main(ActivityThread.java:4196)
02-25 16:56:54.811: E/AndroidRuntime(6913):     at java.lang.reflect.Method.invokeNative(Native Method)
02-25 16:56:54.811: E/AndroidRuntime(6913):     at java.lang.reflect.Method.invoke(Method.java:507)
02-25 16:56:54.811: E/AndroidRuntime(6913):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-25 16:56:54.811: E/AndroidRuntime(6913):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-25 16:56:54.811: E/AndroidRuntime(6913):     at dalvik.system.NativeStart.main(Native Method)

谁能告诉我如何解决这个问题

4

3 回答 3

4

由于上一次尝试中flagEndAsync没有调用该方法的原因,请确保IabHelper在所有情况下(成功或失败)flagEndAsync都调用了该方法。

于 2013-02-25T11:43:18.957 回答
2

这可能会发生,因为IabHelper.handleActivityResult(requestCode, resultCode, data);没有在onActivityResult()您的活动方法中调用。您可能想要验证它是否被调用。

于 2015-03-31T14:02:27.193 回答
1

而不是更新所有代码。在 IabHelper 中公开 flagEndSync 方法更容易。

然后每次调用 IabHelper 时,首先调用 Mhelper.flagEndAsync()。然后你肯定知道你从一个干净的 Asynctask 开始。

我再也没有崩溃了。

于 2013-08-18T08:35:42.867 回答