IAB V3中的IllegalStateException

时间:2013-02-25 11:37:38

标签: android in-app-billing

我试图在app billing v3中使用android,我的应用程序因以下错误而崩溃无法启动异步操作(使用)因为另一个异步操作(使用)正在进行中

堆栈跟踪在下面给出

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)

任何人都可以告诉我如何解决这个问题

3 个答案:

答案 0 :(得分:4)

出于前一次尝试的原因,尚未调用方法flagEndAsync,请确保在所有情况下(成功或失败)IabHelper中调用方法flagEndAsync。< / p>

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

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

不再为我崩溃。