Skip to content

Most visited

Recently visited

navigation

Determinar e monitorar o status da conectividade

Alguns dos usos mais comuns para a repetição de serviços de alarme e atualizações é agendar atualizações regulares de dados de aplicativo de recursos da Internet, dados de cache ou executar downloads de execução longa. Mas, se você não estiver conectado à Internet ou se a conexão for lenta demais para concluir o download, por que acordar o dispositivo para agendar a atualização?

Use o ConnectivityManager para verificar se há realmente uma conexão à Internet e, se houver, qual é o tipo de conexão existente.

Determinar se há uma conexão à Internet

Não há necessidade de agendar uma atualização com base em um recurso da Internet se não houver uma conexão à Internet. O snippet a seguir mostra como usar o ConnectivityManager para consultar a rede ativa e determinar se ela tem conectividade com a internet.

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

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

Determinar o tipo da conexão à Internet

Também é possível determinar o tipo de conexão à Internet disponível no momento.

A conectividade do dispositivo pode ser oferecida por dados móveis, WiMAX, Wi-Fi e conexões Ethernet. Ao consultar o tipo de rede ativa como mostrado abaixo, você pode alterar a taxa de atualização com base na largura de banda disponível.

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

Custos de dados móveis tendem a ser significativamente mais altos do que Wi-Fi. Assim, na maioria dos casos, a taxa de atualização do aplicativo deve ser inferior durante conexões móveis. Da mesma forma, downloads de tamanho significativo devem ser suspensos até que haja uma conexão Wi-Fi.

Após desativar as atualizações, é importante ouvir as mudanças na conectividade para continuar após uma conexão à Internet ser estabelecida.

Monitorar alterações na conectividade

O ConnectivityManager transmite a ação CONNECTIVITY_ACTION ("android.net.conn.CONNECTIVITY_CHANGE") sempre que os detalhes da conectividade mudam. Você pode registrar um receptor de transmissão no manifesto para ouvir essas mudanças e continuar (ou suspender) adequadamente as atualizações em segundo plano.

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

Alterações na conectividade do dispositivo podem ser bastante frequentes — essa transmissão é acionada a cada mudança entre dados móveis e Wi-Fi. Como resultado, é uma prática recomendada monitorar essa transmissão somente quando atualizações ou downloads forem suspensos para poder retomá-los. Normalmente, basta verificar a conectividade à Internet antes de começar uma atualização e, se não houver nenhuma, suspender as atualizações futuras até que a conectividade seja restaurada.

Essa técnica requer alternar receptores de transmissão declarados no manifesto, o que é descrito na lição seguinte.

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!

Siga o Google Developers no 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. (Dec 2017 Android Platform & Tools Survey)