Pular para o conteúdo

Mais visitados

Visitados recentemente

navigation

Otimização do uso de dados de rede

Durante a vida útil de um smartphone, o custo do plano de dados pode facilmente exceder o custo do próprio dispositivo. A partir do Android 7.0 (API de nível 24), os usuários podem ativar a Economia de dados para o dispositivo como um todo para otimizar o uso de dados de seu dispositivo e usar menos dados. Esta capacidade é particularmente útil em deslocamento, perto do final do ciclo de faturamento ou para um pacote de dados pré-pago pequeno.

Quando um usuário ativa a Economia de dados em Settings e o dispositivo está em uma rede tarifada, o sistema bloqueia o uso de dados em segundo plano e avisa aos aplicativos para reduzir o uso de dados no primeiro plano sempre que possível. Os usuários podem autorizar aplicativos específicos a usar dados tarifados em segundo plano, mesmo com a Economia de dados ativada.

O N Developer Preview estende a API ConnectivityManager para oferecer aos aplicativos uma forma de recuperar as preferências do usuário para a Economia de dados e monitorar as mudanças de preferências. Como prática recomendada, os aplicativos devem verificar se o usuário ativou a Economia de dados e tentar limitar o uso de dados em primeiro e segundo plano.

Verificação de preferências da Economia de dados

No N Developer Preview, aplicativos podem usar a API ConnectivityManager para determinar as restrições de uso de dados aplicadas. O método getRestrictBackgroundStatus() retorna um dos seguintes valores:

RESTRICT_BACKGROUND_STATUS_DISABLED
A Economia de dados está desativada.
RESTRICT_BACKGROUND_STATUS_ENABLED
O usuário ativou a Economia de dados para este aplicativo. Os aplicativos tentarão limitar o uso de dados em primeiro plano e gerenciar as restrições ao uso de dados em segundo plano.
RESTRICT_BACKGROUND_STATUS_WHITELISTED
O usuário ativou a Economia de dados, mas o aplicativo está na lista de permissões. Os aplicativos ainda tentarão limitar o uso de dados em primeiro e segundo plano.

É prática recomendada limitar o uso de dados sempre que o dispositivo estiver conectado a uma rede tarifada, mesmo que a Economia de dados esteja desativada e o aplicativo esteja na lista de permissões. A amostra de código a seguir usa ConnectivityManager.isActiveNetworkMetered() e ConnectivityManager.getRestrictBackgroundStatus() para determinar o quanto de dados o aplicativo deve usar:

ConnectivityManager connMgr = (ConnectivityManager)
        getSystemService(Context.CONNECTIVITY_SERVICE);
// Checks if the device is on a metered network
if (connMgr.isActiveNetworkMetered()) {
  // Checks user’s Data Saver settings.
  switch (connMgr.getRestrictBackgroundStatus()) {
    case RESTRICT_BACKGROUND_STATUS_ENABLED:
    // Background data usage is blocked for this app. Wherever possible,
    // the app should also use less data in the foreground.

    case RESTRICT_BACKGROUND_STATUS_WHITELISTED:
    // The app is whitelisted. Wherever possible,
    // the app should use less data in the foreground and background.

    case RESTRICT_BACKGROUND_STATUS_DISABLED:
    // Data Saver is disabled. Since the device is connected to a
    // metered network, the app should use less data wherever possible.
  }
} else {
  // The device is not on a metered network.
  // Use data as required to perform syncs, downloads, and updates.
}

Solicitação de permissão para colocar na lista de permissões

Se o seu aplicativo precisa usar dados em segundo plano, ele pode solicitar permissão para entrar na lista de permissões enviando um intent Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS que contenha o URI no nome de pacote do aplicativo, por exemplo, package:MY_APP_ID.

O envio do intent e do URI abre o aplicativo Settings e exibe as configurações de uso de dados de seu aplicativo. O usuário pode decidir então se ativará os dados em segundo plano para o aplicativo. Antes de enviar o intent, recomenda-se perguntar primeiro ao usuário se ele deseja iniciar o aplicativo Settings com o objetivo de ativar o uso de dados em segundo plano.

Monitoramento de alterações nas preferências da Economia de dados

Aplicativos podem monitorar alterações às preferências de Economia de dados criando um BroadcastReceiver para escutar ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED e registrar dinamicamente o receptor em Context.registerReceiver(). Quando recebe esta transmissão, o aplicativo deve verificar se as novas preferências da Economia de dados afetam as permissões chamando ConnectivityManager.getRestrictBackgroundStatus().

Observação: O sistema só envia essa transmissão para aplicativos que se registram dinamicamente para elas com Context.registerReceiver(). Os aplicativos que se registrarem para receber a transmissão no manifesto não a receberão.

Teste com comandos do Android Debug Bridge

O Android Debug Bridge (ADB) fornece alguns comandos que você pode usar para testar seu aplicativo em condições de Economia de dados. Você pode verificar e configurar permissões de rede ou definir redes sem fio como tarifadas para testar seu aplicativo em redes não tarifadas.

$ adb shell dumpsys netpolicy
Gera um relatório que inclui a configuração de restrição atual da rede de segundo plano global , os UIDs do pacote em lista de permissões e as permissões de rede de outros pacotes conhecidos.
$ adb shell cmd netpolicy
Exibe uma lista completa de comandos do Gerenciador de políticas de rede (netpolicy).
$ adb shell cmd netpolicy set restrict-background <boolean>
Ativa ou desativa o modo da Economia de dados ao passar true ou false, respectivamente.
$ adb shell cmd netpolicy add restrict-background-whitelist <UID>
Adiciona o UID do pacote especificado à lista de permissões para permitir o uso de dados de segundo plano tarifados.
$ adb shell cmd netpolicy remove restrict-background-whitelist <UID>
Adiciona o UID do pacote especificado à lista de permissões para bloquear o uso de dados de segundo plano tarifados enquanto a Economia de dados estiver ativada.
$ adb shell cmd netpolicy list wifi-networks
Lista todas as redes Wi-Fi, exibindo se elas são tarifadas.
$ adb shell cmd netpolicy set metered-network <WIFI_SSID> true
Define Wi-Fi com o SSID especificado como tarifada, o que permite simular uma rede tarifada em uma rede não tarifada.
Este site usa cookies para armazenar suas preferências quanto às opções de idioma e exibição específicas ao site.

Receba as dicas e notícias mais recentes para desenvolvedores Android que ajudarão você a ter sucesso no Google Play.

* Campos obrigatórios

Uhu!

Siga o Google Developers no WeChat

Navegar neste site em ?

Você solicitou uma página em , mas sua preferência de idioma para este site está definida como .

Quer alterar sua preferência de idioma e navegar neste site em ? Para alterar a preferência de idioma depois, use o menu de idiomas na parte inferior de cada página.

É preciso ter o nível de API ou superior para esta aula

Este documento está oculto porque o nível de API selecionado para a documentação é o . Para alterar o nível, clique no seletor acima da barra de navegação esquerda.

Para mais informações sobre como especificar o nível de API que o seu app precisa, leia o artigo Compatibilidade com diferentes versões de plataforma.

Take a short survey?
Help us improve the Android developer experience. (April 2018 — Developer Survey)