gpt4 book ai didi

java - 检测 Android Activity 子类中的连接变化

转载 作者:行者123 更新时间:2023-12-01 14:01:28 26 4
gpt4 key购买 nike

我对 Android 还比较陌生,

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

public class NetworkStateReceiver extends BroadcastReceiver {

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

}
}

问题是:我如何在我的 Activity 子类中接收或转发这些通知?显然,在我的 Activity 子类中创建一个 NetworkStateReceiver 实例并覆盖 onReceive 并不能解决问题。

提前感谢您的指点...

编辑:

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

Intent target = new Intent(CONNECTIVITY_EVENT);
target.putExtra(CONNECTIVITY_STATE, networkInfo.isConnected());
context.sendBroadcast(target);

并在我的Activity中接收它,如下所示:

@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)接口(interface)方法。因此声明一个具有 networkChanged() 的接口(interface)方法,并拥有拥有此 BroadcastReceiver 的类保留想要通过本地 List<InterfaceName> 获得网络更改通知的类列表

2) 跳过创建界面并使用订阅实用程序。我最喜欢的两个是 https://github.com/greenrobot/EventBus

https://gist.github.com/bclymer/6708819 (较小,较少使用,同时免责声明:我写了这个)

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

在您的 Activity 中

@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
}
}

然后在你的 BroadcastReceiver

@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;
}
}

此示例使用第二个订阅实用程序(我的)。

关于java - 检测 Android Activity 子类中的连接变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19322550/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com