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, você pode examinar como e quando o aplicativo transfere dados e otimizar o código subjacente em função disso.

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 aplicativo para o qual 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 aplicativo envia uma solicitação à rede, o dispositivo deve 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 aplicativo 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 aplicativo para aprimorar 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 mais informações sobre as técnicas de otimização das atividades de rede do aplicativo, leia Redução do consumo de bateria pela 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 guias a seguir 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 todos os encadeamentos de CPU do seu aplicativo. 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. Você também pode 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 um dos encadeamentos de CPU do aplicativo. Como mostrado na figura 2, essa visualização permite que você inspecione quais encadeamentos do seu aplicativo são responsáveis por cada solicitação de rede.

    Figura 2. Inspeção de solicitações de rede por encadeamento do aplicativo 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 aplicativo usar outra biblioteca de conexão de rede, poderá não ser possível ver as atividades de rede no Network Profiler. Se você recebeu essa mensagem de erro, mas o aplicativo usar 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 bibliotecas adicionais.