BroadcastReceiver CONNECTIVITY_CHANGE siempre se ejecuta en la primera vez que se inicia la aplicación?

Lo leí en Google Developer:

("Android.net.conn.CONNECTIVITY_CHANGE") acción siempre que los detalles de conectividad hayan cambiado

Tengo este código:

Public class MainActivity extends AppCompatActivity {

private NetworkChangeReceiver receiver; private boolean connIntentFilterIsRegistered; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); receiver = new NetworkChangeReceiver(); } @Override protected void onPause() { super.onPause(); if (connIntentFilterIsRegistered) { unregisterReceiver(receiver); connIntentFilterIsRegistered = false; } } @Override protected void onResume() { super.onResume(); if (!connIntentFilterIsRegistered) { registerReceiver(receiver, new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE")); connIntentFilterIsRegistered = true; } } 

Y //

Public class NetworkUtil {

 public static int TYPE_WIFI = 1; public static int TYPE_MOBILE = 0; public static int TYPE_NOT_CONNECTED = 2; public static int getConnectivityStatus(Context context) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); if (activeNetwork != null && activeNetwork.isConnectedOrConnecting()) { if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) { return TYPE_WIFI; } if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) { return TYPE_MOBILE; } } return TYPE_NOT_CONNECTED; } public static String getConnectivityStatusString(Context context) { int conn = NetworkUtil.getConnectivityStatus(context); String status = null; if (conn == TYPE_MOBILE) { status = "Mobile cellular enabled"; } else if (conn == TYPE_WIFI) { status = "Wifi enabled"; } else if (conn == TYPE_NOT_CONNECTED) { status = "Not connected to internet"; } return status; } 

}

Cuando la primera vez que lanzar la aplicación, esta intención siempre disparó y mostró un diálogo con el estado actual de la red. Pero basado en este documento, sólo ocurre cuando se conecta el cambio? Si quiero esta pantalla sólo cuando la red cambia, ¿cómo puedo hacer? Muchas gracias

La transmisión android.net.conn.CONNECTIVITY_CHANGE es una emisión pegajosa . Esto significa que cada vez que registre un BroadcastReceiver para esta ACTION, siempre se activará de forma inmediata y se onReceive() con el cambio de conectividad de difusión más reciente . Esto le permite obtener el estado actual de la conectividad sin esperar a que algo cambie.

Si desea ignorar el estado actual y sólo desea procesar cambios de estado, puede agregar esto a su onReceive() :

 if (isInitialStickyBroadcast()) { // Ignore this call to onReceive, as this is the sticky broadcast } else { // Connectivity state has changed ... (your code here) } 
  • BroadcastReceiver - onReceive Not Being Called
  • Recuperar el código de solicitud de la emisión de radio de alarma
  • ¿Cómo obtener la ubicación actual y el tiempo de descolgado de la llamada saliente (tiempo de llamada exacto seleccionado)?
  • ContentObserver vs BroadCastReceiver: Uso de la batería, RAM, CPU?
  • Cómo terminar una actividad de un receptor de difusión
  • Cómo repetir la notificación diaria en el tiempo específico en androide a través del servicio de fondo
  • Obtener múltiples transmisiones de intenciones?
  • Cómo detectar nuevas aplicaciones en un dispositivo Android
  • Android WifiP2p - Se notifica cuando un dispositivo descubierto no está disponible
  • Administrador de alarmas que no funciona en intervalos de tiempo específicos
  • Xamarin: BroadcastReceiver no recibe cuando la aplicación no se está ejecutando
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.