【发布时间】:2017-03-21 14:59:39
【问题描述】:
我的Fragment 中有这个BroadcastReceiver 实现:
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
NetworkInfo networkInfo =
intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if(networkInfo.isConnected()) {
//do stuff
}
//Other actions implementation
}
}
};
使用标准注册/注销方法:
@Override
public void onStart() {
super.onStart();
getActivity().registerReceiver(receiver, getIntentFilter());
}
@Override
public void onStop() {
super.onStop();
getActivity().unregisterReceiver(receiver);
}
在其他Fragment 中与WifiManager.NETWORK_STATE_CHANGED_ACTION 具有相同实现的接收器
问题:每次启动其中一个片段时都会触发此操作,但我需要它仅在 Wifi 刚刚连接时触发,并且作为操作的名称说WifiManager.NETWORK_STATE_CHANGED_ACTION,所以它应该只在Wifi状态改变
编辑:正如回复的那样,这个动作默认每次都会触发,所以我的问题是:Wifi连接没有动作?
【问题讨论】:
-
我认为更好的选择是在 Activity 中只拥有一个 BroadcastReceiver,并在发生连接状态更改时调用当前活动的 Fragment 中的方法。
标签: android broadcastreceiver wifimanager