Java 检测Android活动子类中的连接更改

Java 检测Android活动子类中的连接更改,java,android,networking,android-activity,broadcastreceiver,Java,Android,Networking,Android Activity,Broadcastreceiver,我对安卓系统比较陌生 我已经阅读了有关检测网络连接变化的相关文章,并实现了这个BroadcastReceiver子类,对AndroidManifest.xml进行了必要的添加,我收到了预期的必要状态变化广播: public class NetworkStateReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { } }

我对安卓系统比较陌生

我已经阅读了有关检测网络连接变化的相关文章,并实现了这个
BroadcastReceiver
子类,对AndroidManifest.xml进行了必要的添加,我收到了预期的必要状态变化广播:

public class NetworkStateReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

    }
}
问题是:我如何在我的
活动
子类中接收或转发这些通知?显然,在我的
Activity
子类中创建
networkstateceiver
的实例,并在那里重写
onReceive
不会起作用

提前感谢您的指点

编辑:

我最后从上面的
onReceive
广播了一个
Intent
,如下所示:

Intent target = new Intent(CONNECTIVITY_EVENT);
target.putExtra(CONNECTIVITY_STATE, networkInfo.isConnected());
context.sendBroadcast(target);
并在我的
活动中收到类似的信息:

@Override
protected String[] notifyStrings() {
     return ArrayUtils.addAll(super.notifyStrings(), new String[] {NetworkStateReceiver.CONNECTIVITY_EVENT});
}

@Override
protected void notifyEvent(Intent intent, String action) {
    super.notifyEvent(intent, action);
    if (action != null) {
        if (action.equalsIgnoreCase(NetworkStateReceiver.CONNECTIVITY_EVENT)) {
            boolean isConnected = intent.getBooleanExtra(NetworkStateReceiver.CONNECTIVITY_STATE, true);
            // Do something...
        }
    }
}

我建议使用这两种方法中的任何一种 1) 接口方法。因此,请声明一个具有
networkChanged()
方法的接口,并让拥有该
BroadcastReceiver
的类使用本地
list
保存一个类列表,这些类希望收到网络更改的通知

2) 跳过界面创建并使用订阅实用程序。我的两个最爱是

(更小,使用更少,也是免责声明:我写了这个)

通过这些,您可以创建具有属性的事件类,然后订阅和发布这些类的实例

在你的活动中

@Override
public void onCreate() {
    ...
    EventBus.getInstance().subscribe(this, MyType.class);
}

@Override
public void onDestroy() {
    ...
    EventBus.getInstance().unsubscribe(this, MyType.class);
}

@Override
public void newEvent(Object event) {
    if (event instanceOf MyType) {
        // do stuff
    }
}
然后在您的
广播接收器中

@Override 
public void onReceive(Context context, Intent intent) {
    EventBus.post(new MyType(true));
}
示例MyType

public class MyType {
    public boolean networkEnabled;
    public MyType(boolean networkEnabled) {
        this.networkEnabled = networkEnabled;
    }
}
此示例使用第二个订阅实用程序(我的)