JavaCronetEngine

public final class JavaCronetEngine extends CronetEngineBase


CronetEngine respaldado por java.net.HttpURLConnection.

No admite netlogs, medición de datos transferidos, bidistream, caché ni prioridad.

Resumen

Constructores públicos

Métodos públicos

void

Registra un objeto de escucha que se llama después del final de cada solicitud con la información de la solicitud.

void

Registra un objeto de escucha que se llama cada vez que el estimador de calidad de la red observa un tiempo de ida y vuelta de muestra.

void

Registra un objeto de escucha que se llama cada vez que el estimador de calidad de la red observa una medición del rendimiento de la muestra.

void
bindToNetwork(long networkHandle)

Vincula el motor al identificador de red especificado.

void
configureNetworkQualityEstimatorForTesting(
    boolean useLocalHostRequests,
    boolean useSmallerResponses,
    boolean disableOfflineCheck
)

Configura el estimador de calidad de la red para las pruebas.

ExperimentalUrlRequest
createRequest(
    String url,
    UrlRequest.Callback callback,
    Executor executor,
    int priority,
    Collection<Object> connectionAnnotations,
    boolean disableCache,
    boolean disableConnectionMigration,
    boolean allowDirectExecutor,
    boolean trafficStatsTagSet,
    int trafficStatsTag,
    boolean trafficStatsUidSet,
    int trafficStatsUid,
    RequestFinishedInfo.Listener requestFinishedListener,
    int idempotency,
    long networkHandle,
    String method,
    ArrayList<Map.Entry<StringString>> requestHeaders,
    UploadDataProvider uploadDataProvider,
    Executor uploadDataProviderExecutor,
    byte[] sharedDictionaryHash,
    ByteBuffer sharedDictionary,
    @NonNull String sharedDictionaryId
)
URLStreamHandlerFactory

Crea un URLStreamHandlerFactory para controlar el tráfico HTTP y HTTPS.

int

Devuelve la cantidad de solicitudes activas.

int

Devuelve la estimación de capacidad de procesamiento de descarga (en kilobits por segundo) que calcula el estimador de calidad de la red.

int

Devuelve una estimación del tipo de conexión efectiva que calcula el estimador de calidad de la red.

byte[]

Este método dejó de estar disponible.

En las versiones modernas de Cronet, siempre se devolverá un array vacío.

int

Devuelve la estimación del RTT de HTTP (en milisegundos) que calcula el estimador de calidad de la red.

int

Devuelve la estimación del RTT del transporte (en milisegundos) que calcula el estimador de calidad de la red.

String
URLConnection

Establece una conexión nueva con el recurso especificado por URLurl.

URLConnection
openConnection(URL url, Proxy proxy)

Establece una nueva conexión con el recurso especificado por URLurl usando el proxy determinado.

void

Quita un objeto de escucha de solicitud finalizada.

void

Quita un objeto de escucha de los tiempos de viaje de ida y vuelta si se registró previamente con addRttListener.

void

Quita un objeto de escucha de rendimiento.

void

Cierra el CronetEngine si no hay solicitudes activas; de lo contrario, arroja una excepción.

void
startNetLogToDisk(String dirPath, boolean logAll, int maxSize)

Inicia el registro de NetLog en un directorio especificado con un tamaño limitado.

void
startNetLogToFile(String fileName, boolean logAll)

Inicia el registro de NetLog en un archivo.

void

Detiene el registro de NetLog y vacía el archivo en el disco.

Métodos protegidos

ExperimentalBidirectionalStream
createBidirectionalStream(
    String url,
    BidirectionalStream.Callback callback,
    Executor executor,
    String httpMethod,
    List<Map.Entry<StringString>> requestHeaders,
    @CronetEngineBase.StreamPriority int priority,
    boolean delayRequestHeadersUntilFirstFlush,
    Collection<Object> connectionAnnotations,
    boolean trafficStatsTagSet,
    int trafficStatsTag,
    boolean trafficStatsUidSet,
    int trafficStatsUid,
    long networkHandle
)

Constantes heredadas

De org.chromium.net.CronetEngine
static final int

Se desconoce el valor del recuento de solicitudes activas.

De org.chromium.net.impl.CronetEngineBase
static final long

Métodos heredados

De org.chromium.net.impl.CronetEngineBase
ExperimentalUrlRequest.Builder
newUrlRequestBuilder(
    String url,
    UrlRequest.Callback callback,
    Executor executor
)

Crea un compilador para UrlRequest.

Constructores públicos

JavaCronetEngine

public JavaCronetEngine(CronetEngineBuilderImpl builder)

Métodos públicos

addRequestFinishedListener

public void addRequestFinishedListener(RequestFinishedInfo.Listener listener)

Registra un objeto de escucha que se llama después del final de cada solicitud con la información de la solicitud.

Se llama al objeto de escucha en un java.util.concurrent.Executor proporcionado por el objeto de escucha.

Parámetros
RequestFinishedInfo.Listener listener

Es el objeto de escucha para las solicitudes finalizadas.

addRttListener

public void addRttListener(NetworkQualityRttListener listener)

Registra un objeto de escucha que se llama cada vez que el estimador de calidad de la red observa un tiempo de ida y vuelta de muestra. Se debe llamar después de enableNetworkQualityEstimator y, de lo contrario, arrojará una excepción. Los tiempos de ida y vuelta se pueden registrar en varias capas de la pila de red, incluidas TCP, QUIC y la capa de solicitud de URL. Se llama al objeto de escucha en el java.util.concurrent.Executor que se pasa a enableNetworkQualityEstimator.

Parámetros
NetworkQualityRttListener listener

Es el objeto de escucha de los tiempos de ida y vuelta.

addThroughputListener

public void addThroughputListener(NetworkQualityThroughputListener listener)

Registra un objeto de escucha que se llama cada vez que el estimador de calidad de la red observa una medición del rendimiento de la muestra. Se debe llamar después de enableNetworkQualityEstimator. Las observaciones de capacidad de procesamiento se calculan midiendo los bytes leídos a través de la interfaz de red activa en los momentos en que se recibe al menos una respuesta de URL. Se llama al objeto de escucha en el java.util.concurrent.Executor que se pasa a enableNetworkQualityEstimator.

Parámetros
NetworkQualityThroughputListener listener

es el objeto de escucha del rendimiento.

bindToNetwork

public void bindToNetwork(long networkHandle)

Vincula el motor al identificador de red especificado. Todas las solicitudes creadas a través de este motor usarán la red asociada a este identificador. Si se desconecta esta red, fallarán todas las solicitudes. El error exacto dependerá de la etapa de procesamiento de la solicitud en la que se desconecte la red. Los identificadores de red se pueden obtener a través de Network#getNetworkHandle. Solo disponible a partir de Android Marshmallow.

Parámetros
long networkHandle

Es el identificador de red al que se debe vincular el motor. Especifica UNBIND_NETWORK_HANDLE para desvincular.

configureNetworkQualityEstimatorForTesting

public void configureNetworkQualityEstimatorForTesting(
    boolean useLocalHostRequests,
    boolean useSmallerResponses,
    boolean disableOfflineCheck
)

Configura el estimador de calidad de la red para las pruebas. Se debe llamar a este método antes de agregar los objetos de escucha del tiempo de ida y vuelta y la capacidad de procesamiento, y después de habilitar el estimador de calidad de la red.

Parámetros
boolean useLocalHostRequests

Incluir solicitudes a localhost en las estimaciones

boolean useSmallerResponses

Incluye respuestas pequeñas en las estimaciones de rendimiento.

boolean disableOfflineCheck

Cuando se establece en verdadero, inhabilita las verificaciones sin conexión del dispositivo cuando se calcula el tipo de conexión efectivo o cuando se escriben las preferencias.

createRequest

public ExperimentalUrlRequest createRequest(
    String url,
    UrlRequest.Callback callback,
    Executor executor,
    int priority,
    Collection<Object> connectionAnnotations,
    boolean disableCache,
    boolean disableConnectionMigration,
    boolean allowDirectExecutor,
    boolean trafficStatsTagSet,
    int trafficStatsTag,
    boolean trafficStatsUidSet,
    int trafficStatsUid,
    RequestFinishedInfo.Listener requestFinishedListener,
    int idempotency,
    long networkHandle,
    String method,
    ArrayList<Map.Entry<StringString>> requestHeaders,
    UploadDataProvider uploadDataProvider,
    Executor uploadDataProviderExecutor,
    byte[] sharedDictionaryHash,
    ByteBuffer sharedDictionary,
    @NonNull String sharedDictionaryId
)

createURLStreamHandlerFactory

public URLStreamHandlerFactory createURLStreamHandlerFactory()

Crea un URLStreamHandlerFactory para controlar el tráfico HTTP y HTTPS. Se puede instalar una instancia de esta clase a través de setURLStreamHandlerFactory, por lo que se usa este CronetEngine de forma predeterminada para todas las solicitudes creadas a través de openConnection.

Cronet no usa ciertas funciones de HTTP proporcionadas a través del sistema:

Si bien Cronet admite y recomienda las solicitudes que usan el protocolo HTTPS, no proporciona compatibilidad con la API de HttpsURLConnection. Esta falta de compatibilidad también incluye no usar ciertas funciones de HTTPS proporcionadas a través del sistema:

Muestra
URLStreamHandlerFactory

Es una instancia de URLStreamHandlerFactory implementada por este CronetEngine.

getActiveRequestCount

public int getActiveRequestCount()

Devuelve la cantidad de solicitudes activas.

Una solicitud se vuelve "activa" en UrlRequest.start(), suponiendo que ese método no arroje una excepción. Se vuelve inactivo cuando todas las devoluciones de llamada se completaron y no se pueden activar devoluciones de llamada adicionales en el futuro. En la práctica, esto significa que la solicitud está inactiva una vez que se devolvieron onSucceeded/onCanceled/onFailed y todos los objetos de escucha de finalización de la solicitud. Ciclo de vida de las solicitudes de Cronet para obtener más información.

getDownstreamThroughputKbps

public int getDownstreamThroughputKbps()

Devuelve la estimación de capacidad de procesamiento de descarga (en kilobits por segundo) que calcula el estimador de calidad de la red. Se establece en CONNECTION_METRIC_UNKNOWN si el valor no está disponible. Se debe llamar después de enableNetworkQualityEstimator; de lo contrario, se arrojará una excepción.

Muestra
int

Es una estimación de la capacidad de procesamiento de descarga en kilobits por segundo.

getEffectiveConnectionType

public int getEffectiveConnectionType()

Devuelve una estimación del tipo de conexión efectiva que calcula el estimador de calidad de la red. Llama a enableNetworkQualityEstimator para comenzar a calcular este valor.

Muestra
int

El tipo de conexión estimado. El valor que se muestra es uno de los siguientes: EFFECTIVE_CONNECTION_TYPE_* .

getGlobalMetricsDeltas

public byte[] getGlobalMetricsDeltas()

getHttpRttMs

public int getHttpRttMs()

Devuelve la estimación del RTT de HTTP (en milisegundos) que calcula el estimador de calidad de la red. Se establece en CONNECTION_METRIC_UNKNOWN si el valor no está disponible. Se debe llamar después de enableNetworkQualityEstimator; de lo contrario, se arrojará una excepción.

Muestra
int

Es la estimación del RTT de HTTP en milisegundos.

getTransportRttMs

public int getTransportRttMs()

Devuelve la estimación del RTT del transporte (en milisegundos) que calcula el estimador de calidad de la red. Se establece en CONNECTION_METRIC_UNKNOWN si el valor no está disponible. Se debe llamar después de enableNetworkQualityEstimator; de lo contrario, se arrojará una excepción.

Muestra
int

Es la estimación del RTT del transporte en milisegundos.

getVersionString

public String getVersionString()
Muestra
String

Es una cadena de versión del motor legible por humanos.

openConnection

public URLConnection openConnection(URL url)

Establece una conexión nueva con el recurso especificado por URLurl.

Nota: La implementación de java.net.HttpURLConnection de Cronet está sujeta a ciertas limitaciones. Consulta createURLStreamHandlerFactory para obtener más detalles.

Parámetros
URL url

Es la URL del recurso al que se conectará.

Muestra
URLConnection

Es una instancia de java.net.HttpURLConnection implementada por este CronetEngine.

Arroja
java.io.IOException

Si se produce un error al abrir la conexión

openConnection

public URLConnection openConnection(URL url, Proxy proxy)

Establece una nueva conexión con el recurso especificado por URLurl usando el proxy determinado.

Nota: La implementación de java.net.HttpURLConnection de Cronet está sujeta a ciertas limitaciones. Consulta createURLStreamHandlerFactory para obtener más detalles.

Parámetros
URL url

Es la URL del recurso al que se conectará.

Proxy proxy

Es el proxy que se usará cuando se establezca la conexión.

Muestra
URLConnection

Es una instancia de java.net.HttpURLConnection implementada por este CronetEngine.

Arroja
java.io.IOException

Si se produce un error al abrir la conexión

removeRequestFinishedListener

public void removeRequestFinishedListener(RequestFinishedInfo.Listener listener)

Quita un objeto de escucha de solicitud finalizada.

Parámetros
RequestFinishedInfo.Listener listener

Es el objeto de escucha que se quitará.

removeRttListener

public void removeRttListener(NetworkQualityRttListener listener)

Quita un objeto de escucha de los tiempos de viaje de ida y vuelta si se registró previamente con addRttListener. Se debe llamar después de que se agrega un NetworkQualityRttListener para dejar de recibir observaciones.

Parámetros
NetworkQualityRttListener listener

Es el objeto de escucha de los tiempos de ida y vuelta.

removeThroughputListener

public void removeThroughputListener(NetworkQualityThroughputListener listener)

Quita un objeto de escucha de rendimiento. Se debe llamar después de que se agregue un NetworkQualityThroughputListener con addThroughputListener para dejar de recibir observaciones.

Parámetros
NetworkQualityThroughputListener listener

es el objeto de escucha del rendimiento.

shutdown

public void shutdown()

Cierra el CronetEngine si no hay solicitudes activas; de lo contrario, arroja una excepción.

No se puede llamar en el subproceso de red, el subproceso en el que Cronet llama a Executor (que es diferente del subproceso en el que Executor invoca devoluciones de llamada). Es posible que se bloquee hasta que se limpien todos los recursos de CronetEngine.

startNetLogToDisk

public void startNetLogToDisk(String dirPath, boolean logAll, int maxSize)

Inicia el registro de NetLog en un directorio especificado con un tamaño limitado. El registro de NetLog contendrá eventos emitidos por todos los objetos CronetEngine activos. NetLog es útil para la depuración. Una vez que se detenga el registro stopNetLog, los datos se escribirán en netlog.json en dirPath. Si se interrumpe el registro, puedes unir los archivos que se encuentran en el subdirectorio .inprogress de forma manual con https://chromium.googlesource.com/chromium/src/+/main/net/tools/stitch_net_log_files.py. El registro se puede ver con un navegador Chrome que navega a chrome://net-internals/#import.

Parámetros
String dirPath

Es el directorio en el que se creará el archivo netlog.json. dirPath ya debe existir. No debe haber archivos de NetLog en el directorio. Si se está registrando de forma activa, se ignorará este método.

boolean logAll

true para incluir eventos básicos, cookies de usuario, credenciales y todos los bytes transferidos en el registro Esta opción presenta un riesgo para la privacidad, ya que expone las credenciales del usuario, y solo debe usarse con el consentimiento del usuario y en situaciones en las que el registro no será público. false para incluir solo eventos básicos

int maxSize

Es el espacio total máximo en disco, en bytes, que debe usar NetLog. Es posible que el uso real del espacio en el disco supere ligeramente este límite.

startNetLogToFile

public void startNetLogToFile(String fileName, boolean logAll)

Inicia el registro de NetLog en un archivo. El registro de NetLog contendrá eventos emitidos por todos los objetos CronetEngine activos. NetLog es útil para la depuración. El archivo se puede ver con un navegador Chrome que navega a chrome://net-internals/#import

Parámetros
String fileName

ruta de acceso completa al archivo No debe estar vacío. Si el archivo existe, se trunca antes de comenzar. Si se está registrando de forma activa, se ignorará este método.

boolean logAll

true para incluir eventos básicos, cookies de usuario, credenciales y todos los bytes transferidos en el registro Esta opción presenta un riesgo para la privacidad, ya que expone las credenciales del usuario, y solo debe usarse con el consentimiento del usuario y en situaciones en las que el registro no será público. false para incluir solo eventos básicos

stopNetLog

public void stopNetLog()

Detiene el registro de NetLog y vacía el archivo en el disco. Si no hay una sesión de registro en curso, se ignora esta llamada.

Métodos protegidos

createBidirectionalStream

protected ExperimentalBidirectionalStream createBidirectionalStream(
    String url,
    BidirectionalStream.Callback callback,
    Executor executor,
    String httpMethod,
    List<Map.Entry<StringString>> requestHeaders,
    @CronetEngineBase.StreamPriority int priority,
    boolean delayRequestHeadersUntilFirstFlush,
    Collection<Object> connectionAnnotations,
    boolean trafficStatsTagSet,
    int trafficStatsTag,
    boolean trafficStatsUidSet,
    int trafficStatsUid,
    long networkHandle
)