JavaCronetEngine

public final class JavaCronetEngine extends CronetEngineBase


java.net.HttpURLConnection com suporte do CronetEngine.

Não oferece suporte a netlogs, medição de dados transferidos, bidistream, cache ou prioridade.

Resumo

Construtores públicos

Métodos públicos

void

Registra um listener que é chamado após o fim de cada solicitação com as informações dela.

void

Registra um listener que é chamado sempre que o estimador de qualidade da rede detecta um tempo de ida e volta de amostra.

void

Registra um listener que é chamado sempre que o estimador de qualidade da rede testemunha uma medição de capacidade de processamento de amostra.

void
bindToNetwork(long networkHandle)

Vincula o mecanismo ao identificador de rede especificado.

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

Configura o estimador de qualidade da rede para testes.

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

Cria um URLStreamHandlerFactory para processar o tráfego HTTP e HTTPS.

int

Retorna o número de solicitações ativas.

int

Retorna a estimativa de capacidade de downstream (em quilobits por segundo) calculada pelo estimador de qualidade da rede.

int

Retorna uma estimativa do tipo de conexão efetivo calculado pelo estimador de qualidade da rede.

byte[]

Esse método foi descontinuado.

Em versões modernas do Cronet, isso sempre vai retornar uma matriz vazia.

int

Retorna a estimativa de RTT HTTP (em milissegundos) calculada pelo estimador de qualidade da rede.

int

Retorna a estimativa de RTT de transporte (em milissegundos) calculada pelo estimador de qualidade da rede.

String
URLConnection

Estabelece uma nova conexão com o recurso especificado pelo URLurl.

URLConnection
openConnection(URL url, Proxy proxy)

Estabelece uma nova conexão com o recurso especificado pelo URLurl usando o proxy fornecido.

void

Remove um listener de solicitação concluída.

void

Remove um listener de tempos de ida e volta se ele tiver sido registrado anteriormente com addRttListener.

void

Remove um listener de taxa de transferência.

void

Desliga o CronetEngine se não houver solicitações ativas. Caso contrário, gera uma exceção.

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

Inicia o registro do NetLog em um diretório especificado com um tamanho limitado.

void
startNetLogToFile(String fileName, boolean logAll)

Inicia o registro do NetLog em um arquivo.

void

Interrompe o registro do NetLog e libera o arquivo no 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 herdadas

De org.chromium.net.CronetEngine
static final int

O valor da contagem de solicitações ativas é desconhecido

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

Métodos herdados

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

Cria um builder para UrlRequest.

Construtores públicos

JavaCronetEngine

public JavaCronetEngine(CronetEngineBuilderImpl builder)

Métodos públicos

addRequestFinishedListener

public void addRequestFinishedListener(RequestFinishedInfo.Listener listener)

Registra um listener que é chamado após o fim de cada solicitação com as informações dela.

O listener é chamado em um java.util.concurrent.Executor fornecido por ele.

Parâmetros
RequestFinishedInfo.Listener listener

o listener para solicitações concluídas.

addRttListener

public void addRttListener(NetworkQualityRttListener listener)

Registra um listener que é chamado sempre que o estimador de qualidade da rede detecta um tempo de ida e volta de amostra. Ele precisa ser chamado após enableNetworkQualityEstimator. Caso contrário, uma exceção será gerada. Os tempos de retorno podem ser registrados em várias camadas da pilha de rede, incluindo TCP, QUIC e na camada de solicitação de URL. O listener é chamado no java.util.concurrent.Executor transmitido para enableNetworkQualityEstimator.

Parâmetros
NetworkQualityRttListener listener

o listener de tempos de retorno.

addThroughputListener

public void addThroughputListener(NetworkQualityThroughputListener listener)

Registra um listener que é chamado sempre que o estimador de qualidade da rede testemunha uma medição de capacidade de processamento de amostra. Ele precisa ser chamado depois de enableNetworkQualityEstimator. As observações de capacidade de processamento são calculadas medindo os bytes lidos na interface de rede ativa quando pelo menos uma resposta de URL está sendo recebida. O listener é chamado no java.util.concurrent.Executor transmitido para enableNetworkQualityEstimator.

Parâmetros
NetworkQualityThroughputListener listener

o listener de capacidade de transmissão.

bindToNetwork

public void bindToNetwork(long networkHandle)

Vincula o mecanismo ao identificador de rede especificado. Todas as solicitações criadas por esse mecanismo vão usar a rede associada a esse identificador. Se essa rede for desconectada, todas as solicitações vão falhar. O erro exato vai depender da etapa de processamento da solicitação quando a rede for desconectada. Os identificadores de rede podem ser obtidos usando Network#getNetworkHandle. Disponível apenas a partir do Android Marshmallow.

Parâmetros
long networkHandle

o identificador de rede para vincular o mecanismo. Especifique UNBIND_NETWORK_HANDLE para desvincular.

configureNetworkQualityEstimatorForTesting

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

Configura o estimador de qualidade da rede para testes. Isso precisa ser chamado antes da adição dos listeners de tempo de retorno e de capacidade de processamento e depois que o estimador de qualidade da rede for ativado.

Parâmetros
boolean useLocalHostRequests

incluir solicitações para localhost nas estimativas.

boolean useSmallerResponses

incluir respostas pequenas nas estimativas de capacidade.

boolean disableOfflineCheck

Quando definido como verdadeiro, desativa as verificações off-line do dispositivo ao calcular o tipo de conexão efetivo ou ao gravar as preferências.

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()

Cria um URLStreamHandlerFactory para processar o tráfego HTTP e HTTPS. Uma instância dessa classe pode ser instalada via setURLStreamHandlerFactory, usando assim esse CronetEngine por padrão para todas as solicitações criadas via openConnection.

O Cronet não usa determinados recursos HTTP fornecidos pelo sistema:

Embora a Cronet ofereça suporte e incentive solicitações usando o protocolo HTTPS, ela não oferece suporte à API HttpsURLConnection. Essa falta de suporte também inclui não usar determinados recursos HTTPS fornecidos pelo sistema:

Retorna
URLStreamHandlerFactory

uma instância URLStreamHandlerFactory implementada por este CronetEngine.

getActiveRequestCount

public int getActiveRequestCount()

Retorna o número de solicitações ativas.

Uma solicitação se torna "ativa" em UrlRequest.start(), supondo que esse método não gere uma exceção. Ele fica inativo quando todos os callbacks são retornados e nenhum outro pode ser acionado no futuro. Na prática, isso significa que a solicitação fica inativa quando onSucceeded/onCanceled/onFailed é retornado e todos os listeners de solicitação concluída são retornados. Ciclo de vida das solicitações da Cronet para mais informações.

getDownstreamThroughputKbps

public int getDownstreamThroughputKbps()

Retorna a estimativa de capacidade de downstream (em quilobits por segundo) calculada pelo estimador de qualidade da rede. Defina como CONNECTION_METRIC_UNKNOWN se o valor não estiver disponível. Ele precisa ser chamado depois de enableNetworkQualityEstimator. Caso contrário, uma exceção será gerada.

Retorna
int

Estimativa da capacidade de transmissão de downstream em quilobits por segundo.

getEffectiveConnectionType

public int getEffectiveConnectionType()

Retorna uma estimativa do tipo de conexão efetivo calculado pelo estimador de qualidade da rede. Chame enableNetworkQualityEstimator para começar a calcular esse valor.

Retorna
int

o tipo de conexão estimado. O valor retornado é um dos EFFECTIVE_CONNECTION_TYPE_* .

getGlobalMetricsDeltas

public byte[] getGlobalMetricsDeltas()

getHttpRttMs

public int getHttpRttMs()

Retorna a estimativa de RTT HTTP (em milissegundos) calculada pelo estimador de qualidade da rede. Defina como CONNECTION_METRIC_UNKNOWN se o valor não estiver disponível. Ele precisa ser chamado depois de enableNetworkQualityEstimator. Caso contrário, uma exceção será gerada.

Retorna
int

Estimativa do RTT HTTP em milissegundos.

getTransportRttMs

public int getTransportRttMs()

Retorna a estimativa de RTT de transporte (em milissegundos) calculada pelo estimador de qualidade da rede. Defina como CONNECTION_METRIC_UNKNOWN se o valor não estiver disponível. Ele precisa ser chamado depois de enableNetworkQualityEstimator. Caso contrário, uma exceção será gerada.

Retorna
int

Estimativa do RTT de transporte em milissegundos.

getVersionString

public String getVersionString()
Retorna
String

uma string de versão legível do mecanismo.

openConnection

public URLConnection openConnection(URL url)

Estabelece uma nova conexão com o recurso especificado pelo URLurl.

Observação:a implementação do java.net.HttpURLConnection do Cronet está sujeita a algumas limitações. Consulte createURLStreamHandlerFactory para mais detalhes.

Parâmetros
URL url

URL do recurso a ser conectado.

Retorna
URLConnection

uma instância java.net.HttpURLConnection implementada por este CronetEngine.

Gera
java.io.IOException

se ocorrer um erro ao abrir a conexão.

openConnection

public URLConnection openConnection(URL url, Proxy proxy)

Estabelece uma nova conexão com o recurso especificado pelo URLurl usando o proxy fornecido.

Observação:a implementação do java.net.HttpURLConnection do Cronet está sujeita a algumas limitações. Consulte createURLStreamHandlerFactory para mais detalhes.

Parâmetros
URL url

URL do recurso a ser conectado.

Proxy proxy

Proxy a ser usado ao estabelecer a conexão.

Retorna
URLConnection

uma instância java.net.HttpURLConnection implementada por este CronetEngine.

Gera
java.io.IOException

se ocorrer um erro ao abrir a conexão.

removeRequestFinishedListener

public void removeRequestFinishedListener(RequestFinishedInfo.Listener listener)

Remove um listener de solicitação concluída.

Parâmetros
RequestFinishedInfo.Listener listener

o listener a ser removido.

removeRttListener

public void removeRttListener(NetworkQualityRttListener listener)

Remove um listener de tempos de ida e volta se ele tiver sido registrado anteriormente com addRttListener. Isso precisa ser chamado depois que um NetworkQualityRttListener é adicionado para parar de receber observações.

Parâmetros
NetworkQualityRttListener listener

o listener de tempos de retorno.

removeThroughputListener

public void removeThroughputListener(NetworkQualityThroughputListener listener)

Remove um listener de taxa de transferência. Isso precisa ser chamado depois que um NetworkQualityThroughputListener é adicionado com addThroughputListener para interromper o recebimento de observações.

Parâmetros
NetworkQualityThroughputListener listener

o listener de capacidade de transmissão.

shutdown

public void shutdown()

Desliga o CronetEngine se não houver solicitações ativas. Caso contrário, gera uma exceção.

Não pode ser chamado na linha de execução de rede. A linha de execução que o Cronet chama no Executor é diferente da linha de execução em que o Executor invoca callbacks. Pode bloquear até que todos os recursos do CronetEngine sejam limpos.

startNetLogToDisk

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

Inicia o registro do NetLog em um diretório especificado com um tamanho limitado. O NetLog vai conter eventos emitidos por todos os CronetEngines ativos. O NetLog é útil para depuração. Quando o registro for interrompido stopNetLog, os dados serão gravados em netlog.json em dirPath. Se o registro for interrompido, você poderá juntar os arquivos encontrados no subdiretório .inprogress manualmente usando: https://chromium.googlesource.com/chromium/src/+/main/net/tools/stitch_net_log_files.py. O registro pode ser visualizado usando um navegador Chrome em chrome://net-internals/#import.

Parâmetros
String dirPath

o diretório em que o arquivo netlog.json será criado. dirPath precisa existir. Os arquivos NetLog não podem existir no diretório. Se o registro estiver ativo, esse método será ignorado.

boolean logAll

true para incluir eventos básicos, cookies de usuário, credenciais e todos os bytes transferidos no registro. Essa opção apresenta um risco à privacidade, já que expõe as credenciais do usuário. Ela só deve ser usada com o consentimento do usuário e em situações em que o registro não será público. false para incluir apenas eventos básicos.

int maxSize

o espaço total máximo em disco em bytes que deve ser usado pelo NetLog. O uso real do espaço em disco pode exceder um pouco esse limite.

startNetLogToFile

public void startNetLogToFile(String fileName, boolean logAll)

Inicia o registro do NetLog em um arquivo. O NetLog vai conter eventos emitidos por todos os CronetEngines ativos. O NetLog é útil para depuração. O arquivo pode ser visualizado usando um navegador Chrome em chrome://net-internals/#import

Parâmetros
String fileName

o caminho completo do arquivo. Ele não pode ficar em branco. Se o arquivo existir, ele será truncado antes de começar. Se o registro estiver ativo, esse método será ignorado.

boolean logAll

true para incluir eventos básicos, cookies de usuário, credenciais e todos os bytes transferidos no registro. Essa opção apresenta um risco à privacidade, já que expõe as credenciais do usuário. Ela só deve ser usada com o consentimento do usuário e em situações em que o registro não será público. false para incluir apenas eventos básicos.

stopNetLog

public void stopNetLog()

Interrompe o registro do NetLog e libera o arquivo no disco. Se uma sessão de geração de registros não estiver em andamento, essa chamada será ignorada.

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
)