我有一个应用程序组成的多个活动。有多个项目可以购买。每项活动中显示的内容可能因所购买的内容而异。我有一个BillingReceiver
与purchaseStateChanged()
方法。我在purchaseStateChanged()
里需要做的是说,无论哪个活动正在运行,请使无效/刷新?屏幕。有没有这样做的标准方式?刷新屏幕从BillingReceiver内
编辑:看着西蒙的评论,只是更容易回答,让我们说,BillingReceiver接收到purchaseStateChanged()的调用当两个活动一个可以运行,ActivityA或ActivtyB。这些活动都含有方法void redraw_everything()
它们都声明为:
void redraw_everything()
{
getWindow().getDecorView().invalidate();
}
我不知道设立一个回调的语法,但我想答案可能看起来是这样的:
在两者的onCreate活动应该说是这样的:
BillingReceiver.setupcallback(redraw_everything()); // ??
,并在的onDestroy()方法中有这样的事:
BillingReceiver.setupcallback(null); // ??
然后在BillingReceiver做的方法是这样的:
??? stored_method_to_call;
void setupcallback(???? method_to_call)
{
stored_method_to_call = method_to_call;
}
然后里面purchaseStateChanged()有一些这样的代码:
if (stored_method_to_call != null) // ?? not sure about syntax
{
stored_method_to_call(); // ?? not sure about syntax
}
定义一个接口,并使用您的BillingReceiver对您的活动的回调。该活动注册onPurchaseStateChangedListener()并根据需要进行响应。 – Simon
@Simon:谢谢,看起来它可能是正确的,但我不够舒服,回调让它轻松运行。所以我在问题中增加了一些额外的东西,以便更容易回答 - 也许您可以将您的评论作为答案,以便将其标记为正确。 – Mick
完成,顶部有一些糖。 – Simon