【发布时间】:2014-08-27 14:06:05
【问题描述】:
我注册了一个广播获取ConnectivityManager.CONNECTIVITY_ACTION,代码是:
registerReceiver(mNetwrokBroadcastReceiver, new IntentFilter(
ConnectivityManager.CONNECTIVITY_ACTION));
而接收者是:
private BroadcastReceiver mNetwrokBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
boolean isConnected = false;
NetworkInfo mNetworkInfo = intent
.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
NetworkInfo.State state = (mNetworkInfo == null ? NetworkInfo.State.UNKNOWN
: mNetworkInfo.getState());
switch (state) {
case CONNECTED:
isConnected = true;
break;
case DISCONNECTING:
if (intent.getBooleanExtra(
ConnectivityManager.EXTRA_NO_CONNECTIVITY, false))
isConnected = false;
else {
isConnected = true;
}
break;
default:
break;
}
if (isConnected) {
mPopwin.onDismiss();
init();
}
}
};
但我发现当网络总是连接时,它也发送广播,为什么??? 有一个相同的question,我不明白。
编辑: 我的意思是,我在活动的初始化中注册了一个过滤器为“ConnectivityManager.CONNECTIVITY_ACTION”的广播,当网络始终连接时,我启动活动,执行“onReceive”函数;在google doc说“网络连接发生了变化”,但是网络没有变化,为什么要执行onReceive?
【问题讨论】:
-
你的问题不清楚。请详细说明或使您的问题更清楚。
-
查看我对这个问题的回答stackoverflow.com/a/16428823/769265
标签: android