Cómo inspeccionar el tráfico de red con Network Profiler

Network Profiler muestra actividad de red en tiempo real en un cronograma que incluye la cantidad de datos enviados y recibidos, así como el número de conexiones. Esto te permite examinar la manera y el momento en que tu app transfiere datos, además de optimizar el código subyacente de manera correcta.

Para abrir Network Profiler, sigue estos pasos:

  1. Haz clic en View > Tool Windows > Android Profiler (también puedes hacer clic en Profile  en la barra de herramientas).
  2. Selecciona el dispositivo y el proceso de la app del cual desees generar un perfil en la barra de herramientas de Android Profiler. Si conectaste un dispositivo mediante USB, pero no lo ves en la lista, asegúrate de haber habilitado la depuración USB.
  3. Haz clic en cualquier parte del cronograma NETWORK para abrir Network Profiler.

Para elegir una parte del cronograma, inspeccionar una lista de las solicitudes de red enviadas y las respuestas recibidas, o ver información detallada sobre un archivo seleccionado, debes habilitar la generación de perfiles avanzada.

Por qué debes generar perfiles de la actividad de red de tu app

Cuando tu app realiza una solicitud a la red, el dispositivo debe usar radios móviles o Wi-Fi de alto consumo de batería para enviar y recibir paquetes. Las radios no solo usan energía para transferir datos, sino que también consumen una cantidad adicional de esta para encenderse y no desactivarse.

Con Network Profiler, puedes buscar picos cortos y frecuentes de actividad de red, cuya presencia indica que, por requisitos de tu app, las radios deben activarse con frecuencia o permanecer activas por tiempo prolongado para controlar varias solicitudes cortas y seguidas. Este patrón indica que tal vez puedas optimizar tu app para mejorar el rendimiento de la batería agrupando en lotes las solicitudes de red y, en consecuencia, se reducirá la cantidad de veces que las radios deberán activarse para enviar o recibir datos. Esto también permite que las radios pasen al modo de bajo consumo para ahorrar batería en los períodos prolongados entre solicitudes por lotes.

Si deseas obtener más información sobre técnicas para optimizar la actividad de red de tu app, consulta Cómo reducir el consumo de batería debido a la red.

Descripción general de Network Profiler

En la parte superior de la ventana, puedes ver el cronograma de eventos. En él, puedes 1 hacer clic y arrastrar para seleccionar una parte del cronograma e inspeccionar el tráfico.

Figura 1: Ventana de Network Profiler

En el panel 2 que aparece debajo de la línea de tiempo, elige una de las siguientes pestañas para obtener más detalles sobre la actividad de la red durante la parte seleccionada del cronograma:

  • Connection View: Muestra los archivos que se enviaron o recibieron durante la parte seleccionada del cronograma en todos los subprocesos de la CPU de tu app. En cada solicitud, puedes inspeccionar el tamaño, el tipo, el estado y la duración de la transmisión. Puedes ordenar esta lista haciendo clic en cualquiera de los encabezados de las columnas. También puedes ver un desglose detallado de la parte seleccionada del cronograma que mostrará el momento en que se envió o se recibió cada archivo.
  • Thread View: Muestra la actividad de red de cada uno de los subprocesos de la CPU de la app. Como se muestra en la figura 2, esta vista te permite inspeccionar qué subprocesos son responsables de cada solicitud de red.

    Figura 2: Cómo inspeccionar solicitudes de red por subproceso de la app en Thread View

Desde Connection View o Thread View, haz clic en el nombre de una solicitud para obtener 3 información detallada sobre los datos enviados o recibidos. Haz clic en las pestañas para ver el encabezado y el cuerpo de la respuesta, el encabezado y el cuerpo de la solicitud, o la pila de llamadas.

En las pestañas Response y Request, haz clic en el vínculo View Parsed para mostrar el texto con formato y en View Source para mostrar el que no lo tiene.

Figura 3: Alterna entre texto sin formato (izquierda) y con formato (derecha) haciendo clic en el vínculo correspondiente

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

Cómo solucionar problemas relacionados con la conexión de red

Si Network Profiler detecta valores de tráfico, pero no puede identificar solicitudes de red admitidas, verás el siguiente mensaje de error:

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

Actualmente, Network Profiler admite únicamente las bibliotecas HttpURLConnection y OkHttp para conexiones de red. Si tu app usa otra, es posible que no veas tu actividad de red en Network Profiler. Si recibes este mensaje de error, pero tu app usa HttpURLConnection o OkHttp, informa un error o realiza una búsqueda en el seguimiento de problemas para incluir tu comentario en un informe existente que esté relacionado con el problema. También puedes usar estos recursos a fin de solicitar asistencia para otras bibliotecas.