[英]How to Interface onReceive Method
我已經建立了一個名為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;
}
然后,我可以從BroadcastReceiver
的onReceive
方法調用該接口,如下所示:
public void onReceive(Context context, Intent intent) {
nsc.onReceive();
}
嘗試這樣的事情:
public class NetworkStatus {
public static interface NetworkStatusCallbacks {
void onReceive();
}
private final NetworkStatusCallbacks m_cb;
NetworkStatus(NetworkStatusCallbacks cb)
{
m_cb=cb;
}
public static class ConnectivityChange extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
// need to call NetworkStatusCallbacks onReceive here
m_cb.onReceive()
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.