我有一個應用程序組成的多個活動。有多個項目可以購買。每項活動中顯示的內容可能因所購買的內容而異。我有一個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