我的应用有一个单一的应用内购买,并以 Google 提供的 Dungeon 示例为模型(可在http://code.google.com/p/marketbilling/source/browse/查看)。唯一的区别是在第一次运行时恢复事务的代码已被分离出来并放置在我的应用程序的主要活动中。(我修改后的“地下城”活动是用户购买插件的地方)
restoreTransactions()
我的主要活动中的代码在2.3onCreate()
和 1.6 测试设备上运行良好:
if (!initialized)
{
BillingService mBillingService = new BillingService();
mBillingService.setContext(this);
if (mBillingService.checkBillingSupported())
{
mBillingService.restoreTransactions();
}
mBillingService.unbind();
}
然而,在运行 4.0.4 的 wifi-Xoom 上,它似乎在没有实际做任何事情的情况下直接通过它,直到我打开我的“地下城”活动,此时应该在主要活动中发生的一切都发生了(几乎就像它把所有东西都排好队,但在实际采取行动之前等待“地下城”中的某些东西)。
深入挖掘我可以看到,onServiceConnected()
在我打开我的“地下城”活动之前,Xoom 上永远不会调用 BillingService.java,而在 2.3 和 1.6 上调用它就很好,而没有打开相同的活动。
4.x 中是否发生了一些变化,阻止了它在早期版本中的工作方式?