私のアプリには 1 つのアプリ内購入があり、Google が提供する Dungeons サンプル ( http://code.google.com/p/marketbilling/source/browse/で表示可能) をモデルにしています。唯一の違いは、最初の実行時にトランザクションを復元するコードが分離され、アプリのメイン アクティビティに配置されていることです。(私の変更された「ダンジョン」アクティビティは、ユーザーがプラグインを購入する場所です)
私のメイン アクティビティのrestoreTransactions()
コードはonCreate()
、2.3 と 1.6 の両方のテスト デバイスでうまく動作します。
if (!initialized)
{
BillingService mBillingService = new BillingService();
mBillingService.setContext(this);
if (mBillingService.checkBillingSupported())
{
mBillingService.restoreTransactions();
}
mBillingService.unbind();
}
しかし、4.0.4 を実行している wifi-Xoom では、「Dungeons」アクティビティを開くまで、実際には何もせずに通り抜けるように見えます。この時点で、メイン アクティビティで発生するはずだったすべてのことが発生します (ほとんどすべてをキューに入れますが、実際に行動する前に「ダンジョン」で何かを待ちます)。
さらに深く掘り下げるとonServiceConnected()
、「Dungeons」アクティビティを開くまで BillingService.java が Xoom で呼び出されることはありませんが、2.3 と 1.6 では同じアクティビティを開かなくても問題なく呼び出されることがわかります。
4.x で、これが以前のバージョンのように動作するのを妨げている何かが変更されましたか?