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) } 
  • Android intención para sdcard listo
  • Android BroadcastReceiver onReceive () llamado dos veces en Android 5.1.1 incluso después de un registro
  • Widget de actualización de Android desde el receptor de difusión
  • Intentando iniciar un servicio de inicio en Android
  • Android reprograma la alarma de alarmmanager cuando se mata la aplicación
  • SharedPreferences en BroadcastReceiver parece no actualizar?
  • Cómo interceptar la intención de ACTION_MEDIA_MOUNTED en Android?
  • ¿Cómo distinguir el estado de encendido / apagado de la pantalla durante la llamada entrante?
  • BroadcastReceiver no funciona después de BOOT_COMPLETED
  • Cómo enviar datos a una actividad en ejecución desde Broadcast Receiver,
  • ¿No puedo recibir la emisión en el cambio de estado de la batería?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.