Inspecionar tráfego de rede com o Network Profiler

O Network Profiler exibe atividade da rede em tempo real em uma linha do tempo, mostrando os dados enviados e recebidos, bem como o número atual de conexões. Assim, é possível monitorar como e quando o app transfere dados e otimiza o código subjacente de forma adequada.

Para abrir o Network Profiler, siga estas etapas:

  1. Clique em View > Tool Windows > Profiler (você também pode clicar em Profile na barra de ferramentas).
  2. Selecione o dispositivo e o processo do app para que você quer criar o perfil na barra de ferramentas do Android Profiler. Se você estiver conectado a um dispositivo por USB, mas o dispositivo não for exibido na lista, verifique se a depuração de USB foi ativada.
  3. Clique em qualquer lugar da linha do tempo NETWORK para abrir o Network Profiler.

É necessário ativar a criação do perfil avançada para selecionar uma parte da linha do tempo para inspeção, ver uma lista dos arquivos enviados e recebidos ou ver informações detalhadas sobre um arquivo selecionado enviado ou recebido.

Por que criar o perfil das atividades de rede do aplicativo

Quando o app envia uma solicitação à rede, o dispositivo precisa usar os rádios Wi-Fi ou móvel, que consomem muita energia, para enviar e receber pacotes. Além de usar energia para a transferência de dados, os rádios usam energia extra para iniciar e manter a ativação.

Usando o Network Profiler, você pode procurar picos frequentes e curtos de atividade de rede, que significam que o app exige a frequente ativação dos rádios, ou a permanência no estado ativado por longos períodos para processar várias solicitações curtas em conjunto. Esse padrão indica que você pode otimizar o app para melhorar o desempenho da bateria por meio do agrupamento de solicitações de rede em lotes, reduzindo o número de vezes que os rádios precisam ser ativados para enviar ou receber dados. Além disso, essa otimização permite que os rádios mudem para o modo de baixa energia, economizando bateria nos intervalos maiores entre solicitações agrupadas em lotes.

Para saber mais sobre as técnicas de otimização das atividades de rede do app, leia Redução do descarregamento de bateria por rede.

Visão geral do Network Profiler

Na parte superior da janela, é possível ver a linha do tempo de eventos. Na linha do tempo, você pode 1 clicar e arrastar para selecionar uma parte dela e inspecionar o tráfego.

Figura 1. Janela do Network Profiler

No painel 2 abaixo da linha do tempo, selecione uma das seguintes guias para saber mais sobre a atividade da rede durante a parte selecionada da linha do tempo:

  • Connection View: lista os arquivos que foram enviados ou recebidos durante a parte selecionada da linha do tempo em todas as linhas de execução da CPU do seu app. Para cada solicitação, você pode inspecionar o tamanho, o tipo, o status e a duração da transmissão. Você pode classificar essa lista clicando no cabeçalho de qualquer coluna. Também é possível ver uma descrição detalhada da parte selecionada da linha do tempo, mostrando quando cada arquivo foi enviado ou recebido.
  • Thread View: exibe a atividade de rede de cada uma das linhas de execução de CPU do app. Como mostrado na Figura 2, essa visualização permite que você inspecione as linhas de execução do seu app que são responsáveis por cada solicitação de rede.

    Figura 2. Inspeção de solicitações de rede por linha de execução do app na Thread View

Na Connection View ou na Thread View, clique em um nome de solicitação para inspecionar 3 informações detalhadas sobre os dados enviados ou recebidos. Clique nas guias para ver o cabeçalho e o corpo da resposta, o cabeçalho e o corpo da solicitação ou a pilha de chamadas.

Nas guias Response e Request, clique no link View Parsed para exibir o texto formatado e clique no link View Source para exibir o texto bruto.

Figura 3. Alternância entre texto bruto (à esquerda) e texto formatado (à direita) clicando no link correspondente

URL url = new URL(MY_URL_EN);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
...
// Sets acceptable encodings in the request header.
urlConnection.setRequestProperty("Accept-Encoding", "identity");

Solução de problemas da conexão de rede

Se o Network Profiler detectar valores de tráfego, mas não puder identificar nenhuma solicitação de rede compatível, você receberá a seguinte mensagem de erro:

**Network Profiling Data Unavailable:** There is no information for the
network traffic you've selected.

No momento, o Network Profiler é compatível apenas com as bibliotecas HttpURLConnection e OkHttp para conexões de rede. Se o app usar outra biblioteca de conexão de rede, pode não ser possível ver as atividades de rede no Network Profiler. Se você recebeu essa mensagem de erro, mas o app usa HttpURLConnection ou OkHttp, relate um bug ou pesquise no Issue Tracker para incluir seu feedback em um relatório já existente relacionado ao seu problema. Você também pode usar esses recursos para solicitar compatibilidade com outras bibliotecas.