我已經建立了一個名爲NetworkStatus
的類,用於監視設備的網絡狀態。在NetworkStatus
內,我定義了一個BroadcastReceiver
,用於監視是否存在連接變化,即,如果互聯網已被關閉關閉或關於。我想將此方法(即onReceive
)「公開」給實例化NetworkStatus
實例的活動。如何接口接收方法
我試圖通過在NetworkStatus
類設立interface
來實現這一點,但我不知道如何從BroadcastReceiver
即的onReceive
方法調用接口,
public class NetworkStatus {
public static interface NetworkStatusCallbacks {
void onReceive();
}
public static class ConnectivityChange extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
// need to call NetworkStatusCallbacks onReceive here
}
}
}
然後在主要活動我會做類似的,
public class MyActivity extends Activity implements NetworkStatus.NetworkStatusCallbacks {
@Override
public void onReceive() {
// Do stuff here
}
}
真的很感激一些指針。謝謝。
可能的解決方案
想我已經找到了解決辦法。正如Selvin指出的那樣,要做到這一點需要Activity
。因此,我通過從被傳遞到用於NetworkStatus
類,即一個構造的活動上下文澆鑄獲得的Activity
,設置一個構造用於類作爲
private static nsc NetworkStatusCallbacks;
public NetworkStatus (Context context) {
Activity activity = (Activity) context;
nsc = (NetworkStatusCallbacks) activity;
}
然後我可以調用從的onReceive
方法的界面在BroadcastReceiver
如下:
public void onReceive(Context context, Intent intent) {
nsc.onReceive();
}
簡短的答案是,你不能因爲你沒有在立場的MyAcitivity它將更好地將這些信息存儲在ConnectivityChange.onRecive中的fx數據庫中,並在Activity中讀取這些值... – Selvin
好的。謝謝Selvin。我不能將該活動傳遞給構造函數中的「NetworkStatus」嗎? –