我的应用只进行一次应用内购买,并以Google提供的Dungeons示例为模型(可在http://code.google.com/p/marketbilling/source/browse/查看)。唯一的区别是第一次运行时恢复事务的代码已经分离出来并放在我的应用程序的主要活动中。 (我修改过的“Dungeons”活动是用户购买插件的地方)
我的主要活动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”活动,此时所谓的一切发生在主要活动中,发生(几乎就像它将所有东西排队,但在实际操作之前等待“地下城”中的某些东西)。
深入挖掘我可以看到BillingService.java中的onServiceConnected()
永远不会在Xoom上调用,直到我打开我的“Dungeons”活动,而它在2.3& 1.6没有开放相同的活动。
4.x中有什么变化阻止了它在早期版本中的运行方式吗?