同步应用内结算服务设置

时间:2014-06-29 16:23:31

标签: android android-billing

我使用谷歌提供的代码( IabHelper.java 等)在我的Android应用中设置应用内结算。提供的代码是异步的,因为我需要指定一个回调函数,该函数在成功绑定服务时会很有用。

但是,我发现自己需要掌握有关不同活动的当前订阅的信息。所以我决定在Activity的onCreate方法中同步绑定计费服务并将其保存在静态变量中。这应该相对较快,因为Google Play服务会进行一些缓存。我使用的代码如下:

        // this - current activity
        CountDownLatch latch = new CountDownLatch(1);
        mService = new BillingService(this, latch);
        try {
            latch.await();
        } catch (InterruptedException ignored) {}

然后在onIabSetupFinished我致电latch.countDown()。不幸的是,countDown永远不会被执行,而我的代码仍然停留在await()中。有谁知道如何解决这个问题或建议替代解决方案?

1 个答案:

答案 0 :(得分:1)

onIabSetupFinished()ServiceConnection.onServiceConnected()调用,计划在您应用的主线程上执行。由于您使用latch.await()阻止主线程,因此无法运行。

您无法阻止该应用,而只是显示不可取消的ProgressDialog,直到您从IAB服务获取信息。