このチュートリアルに従って、データが AsyncTask の doInBackground() 関数で読み込まれている間に、アプリの起動時に読み込み画面を追加しました。
私のアプリにはアプリ内課金のプレミアム アップグレードもあり、起動時に在庫を照会して確認したいと考えています。ただし、IabHelper
関数はすでに非同期です。
IabHelper
チェックを doInBackground()に統合して、すべてが正常に完了したときにのみメイン アクティビティが読み込まれるようにするにはどうすればよいですか?
私の請求コードは次のとおりです。
private void checkForPremiumPurchase()
{
billingHelper = new IabHelper(this, Constants.BASE_64_KEY);
//Start setup. This is asynchronous and the specified listener will be called once setup completes.
billingHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if(result.isSuccess()) {
billingHelper.queryInventoryAsync(mGotInventoryListener);
}
}
});
}
//Listener that's called when we finish querying the items and subscriptions we own
IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener()
{
@Override
public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
if(result.isSuccess()) {
isPremium = inventory.hasPurchase(Constants.SKU_PREMIUM);
Log.d(Constants.TAG, "App is " + (isPremium ? "PREMIUM" : "NOT PREMIUM"));
}
}
};