2012-11-07 129 views
0

我注册的广播来获得ConnectivityManager.CONNECTIVITY_ACTION广播,代码为:安卓: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,我找不到它。我的意思是,我在一个活动的init中注册一个过滤器为“ConnectivityManager.CONNECTIVITY_ACTION”的广播,当网络一直连接时,我开始活动,执行函数“onReceive”;在google doc中表示“网络连接发生了变化”,但网络没有变化,为什么要执行onReceive?

+0

你的问题不明确。请详细说明或让您的问题更清楚。 –

+0

好吧,我编辑了 – Mejonzhan

+0

看到我对这个问题的回答http://stackoverflow.com/a/16428823/769265 –

回答

1

由于CONNECTIVITY_ACTION是棒广播因此它继续呼吁onRecevie将其删除ü可以使用removeStickyBroadcast(意向意图)DOC