Skip to content

Most visited

Recently visited

navigation

Cómo determinar y supervisar el estado de conectividad

Algunos de los usos más comunes para las alarmas con repetición y los servicios en segundo plano es programar actualizaciones regulares de los datos de aplicaciones a partir de recursos de Internet, almacenar datos en la memoria caché o ejecutar descargas a largo plazo. Sin embargo, si no estás conectado a Internet o la conexión es demasiado lenta para completar tu descarga, ¿para qué activar el dispositivo y programar la actualización?

Puedes utilizar ConnectivityManager para comprobar si realmente estás conectado a Internet y, en ese caso, qué tipo de conexión se está utilizando.

Cómo determinar si tienes conexión a Internet

No es necesario programar una actualización basada en un recurso de Internet si no estás conectado. En el fragmento que aparece a continuación, se muestra la manera de usar ConnectivityManager para consultar la red activa y determinar si tiene conexión a Internet.

ConnectivityManager cm =
        (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
                      activeNetwork.isConnectedOrConnecting();

Cómo determinar el tipo de conexión a Internet

También puedes determinar el tipo de conexión a Internet que se encuentra disponible.

La conectividad del dispositivo puede ser a través de datos móviles, WiMAX, Wi-Fi y ethernet. Al consultar el tipo de red activa, como se muestra a continuación, puedes modificar la frecuencia de actualización en función del ancho de banda disponible.

boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;

El coste de las conexiones de datos móviles suele ser superior al de las conexiones Wi-Fi, por lo que en la mayoría de los casos, la frecuencia de actualización de tu app debería ser menor si utilizas conexiones móviles. Del mismo modo, las descargas grandes deberían interrumpirse hasta que estés conectado a una red Wi-Fi.

Cuando hayas inhabilitado las actualizaciones, es importante que detectes si hay cambios en la conectividad para poder reanudarlas cuando se haya restablecido una conexión a Internet.

Cómo supervisar los cambios en la conectividad

ConnectivityManager transmite la acción CONNECTIVITY_ACTION ("android.net.conn.CONNECTIVITY_CHANGE") cuando se modifica la información de conectividad. Puedes registrar un receptor de transmisión en tu manifiesto para detectar estos cambios y reanudar (o interrumpir) las actualizaciones en segundo plano según corresponda.

<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>

Los cambios en la conectividad de un dispositivo pueden ser muy frecuentes. Esta transmisión se activa siempre que cambias entre una conexión de datos móviles y una conexión Wi-Fi. Como resultado, te recomendamos que supervises esta transmisión únicamente cuando hayas interrumpido anteriormente las actualizaciones o las descargas para reanudarlas. Normalmente, basta con comprobar la conexión a Internet antes de iniciar una actualización y, si no hay ninguna, interrumpir el resto de actualizaciones hasta que se restablezca la conexión.

Esta técnica requiere que alternes receptores de transmisión que hayas declarado en tu manifiesto, lo cual se describe en la próxima sección.

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)