0
我正在使用谷歌提供的代碼(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()
。有誰知道如何解決這個問題或建議一種替代解決方案?
要繼續,我應該關閉從''onIabSetupFinished()''的對話框?那麼沒有其他辦法了? – dragoon
準確地說,關閉'onIabSetupFinished()'中的對話框。主線程不僅僅用於UI,還用於服務連接回調和其他事情。所以阻止它不是一個好主意。 –