Android应用内计费。何时注销响应管理员?

Android应用内计费。何时注销响应管理员?,android,in-app-billing,Android,In App Billing,我们在一年前实现了应用内计费,遵循文档中的示例代码没有任何问题。几周前,我们注意到用户抱怨没有得到他们的物品。调试代码时,我们发现以下句子是问题的根源: /** * Called when this activity is no longer visible. */ @Override protected void onStop() { super.onStop(); ResponseHandler.unregister(mDungeonsPurchaseObserver);

我们在一年前实现了应用内计费,遵循文档中的示例代码没有任何问题。几周前,我们注意到用户抱怨没有得到他们的物品。调试代码时,我们发现以下句子是问题的根源:

/**
 * Called when this activity is no longer visible.
 */
@Override
protected void onStop() {
    super.onStop();
    ResponseHandler.unregister(mDungeonsPurchaseObserver);
}
在我的三星Galaxy S设备上,当市场屏幕出现时,会调用此方法,清除观察者并中断整个电路。我们已经将调用移到了
ondestory
方法,现在一切正常


这是处理问题的正确方法吗?有人经历过这种情况吗?

我也面临着同样的问题。我在ResponseHandler上实现了一个队列:如果观察者为null,我将信息放在队列上;一旦添加了观察者,我就使用队列中的信息来调用它。这在我的应用程序中是有意义的,而且似乎工作得很好

我不知道加入onDestroy是否是个好主意,因为更新不可见活动的界面是没有意义的


您的解决方案有什么问题吗?

我也面临同样的问题。我在ResponseHandler上实现了一个队列:如果观察者为null,我将信息放在队列上;一旦添加了观察者,我就使用队列中的信息来调用它。这在我的应用程序中是有意义的,而且似乎工作得很好

我不知道加入onDestroy是否是个好主意,因为更新不可见活动的界面是没有意义的


您的解决方案有任何问题吗?

确实,您的解决方案听起来更好。我们有很多活动,我们失去了一些交易。那么您正在
ResponseHandler.purchaseResponse
方法的
else
中填充队列?是的。(
if(sPurchaseObserver==null)
)。然后在注册观察者时使用队列。确实,您的解决方案听起来更好。我们有很多活动,我们失去了一些交易。那么您正在
ResponseHandler.purchaseResponse
方法的
else
中填充队列?是的。(
if(sPurchaseObserver==null)
)。然后在注册观察者时使用队列。我面临同样的问题。。。你有没有可能详细说明你的解决方案?你是不是把注销程序留在了onDestroy?是的。在onDestroy中注销并在ResponseHandler.purchaseResponse方法中添加“else”:如果(sPurchaseObserver!=null)sPurchaseObserver.postPurchaseStateChange。。。else//将购买详细信息添加到SharedReference中,稍后再处理(例如,在开始您的主要活动时)。我面临相同的问题。。。你有没有可能详细说明你的解决方案?你是不是把注销程序留在了onDestroy?是的。在onDestroy中注销并在ResponseHandler.purchaseResponse方法中添加“else”:如果(sPurchaseObserver!=null)sPurchaseObserver.postPurchaseStateChange。。。else//将购买详细信息添加到SharedReference中,并在以后处理(例如,在开始您的主要活动时)