Cómo inspeccionar el tráfico de red con el Generador de perfiles de red

El Generador de perfiles de red 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 el Generador de perfiles de red, sigue estos pasos:

  1. Haz clic en View > Tool Windows > Profiler (también puedes hacer clic en Profile , en la barra de herramientas).
  2. En la barra de herramientas de Android Profiler, selecciona el dispositivo y el proceso de la app del cual desees generar un perfil. 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 el Generador de perfiles de red, 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 del Generador de perfiles de red

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 del Generador de perfiles de red

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 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 el Generador de perfiles de red 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, el Generador de perfiles de red solo admite las bibliotecas HttpURLConnection y OkHttp para las conexiones de red. Si tu app usa otra, es posible que no veas tu actividad de red en el Generador de perfiles de red. Si recibes este mensaje de error, pero tu app sí 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.