CronetEngine

public abstract class CronetEngine

Subclasses diretas conhecidas
Subclasses indiretas conhecidas
JavaCronetEngine

java.net.HttpURLConnection com suporte do CronetEngine.


Um mecanismo para processar UrlRequests, que usa a melhor pilha HTTP disponível na plataforma atual. Uma instância dessa classe pode ser criada usando Builder.

Resumo

Tipos aninhados

Um builder para CronetEngines, que permite a configuração de CronetEngine no tempo de execução.

Uma classe que fornece um método para carregar a biblioteca nativa do Cronet.

Constantes

static final int

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

static final int

O valor de uma métrica de conexão é desconhecido.

static final int

A estimativa do tipo de conexão vigente é 2G.

static final int

A estimativa do tipo de conexão vigente é 3G.

static final int

A estimativa do tipo de conexão vigente é 4G.

static final int

O dispositivo está off-line.

static final int

A estimativa do tipo de conexão vigente é 2G lenta.

static final int

A estimativa do tipo de conexão vigente é desconhecida.

static final long

O valor a ser usado para desfazer qualquer vinculação de rede anterior.

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.

abstract 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.

abstract 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.

abstract String
abstract UrlRequest.Builder
newUrlRequestBuilder(
    String url,
    UrlRequest.Callback callback,
    Executor executor
)

Cria um builder para UrlRequest.

abstract URLConnection

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

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.

abstract 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.

abstract void
startNetLogToFile(String fileName, boolean logAll)

Inicia o registro do NetLog em um arquivo.

abstract void

Interrompe o registro do NetLog e libera o arquivo no disco.

Constantes

ACTIVE_REQUEST_COUNT_UNKNOWN

public static final int ACTIVE_REQUEST_COUNT_UNKNOWN = -1

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

CONNECTION_METRIC_UNKNOWN

public static final int CONNECTION_METRIC_UNKNOWN = -1

O valor de uma métrica de conexão é desconhecido.

EFFECTIVE_CONNECTION_TYPE_2G

public static final int EFFECTIVE_CONNECTION_TYPE_2G = 3

A estimativa do tipo de conexão vigente é 2G.

Consulte também
getEffectiveConnectionType

EFFECTIVE_CONNECTION_TYPE_3G

public static final int EFFECTIVE_CONNECTION_TYPE_3G = 4

A estimativa do tipo de conexão vigente é 3G.

Consulte também
getEffectiveConnectionType

EFFECTIVE_CONNECTION_TYPE_4G

public static final int EFFECTIVE_CONNECTION_TYPE_4G = 5

A estimativa do tipo de conexão vigente é 4G.

Consulte também
getEffectiveConnectionType

EFFECTIVE_CONNECTION_TYPE_OFFLINE

public static final int EFFECTIVE_CONNECTION_TYPE_OFFLINE = 1

O dispositivo está off-line.

Consulte também
getEffectiveConnectionType

EFFECTIVE_CONNECTION_TYPE_SLOW_2G

public static final int EFFECTIVE_CONNECTION_TYPE_SLOW_2G = 2

A estimativa do tipo de conexão vigente é 2G lenta.

Consulte também
getEffectiveConnectionType

EFFECTIVE_CONNECTION_TYPE_UNKNOWN

public static final int EFFECTIVE_CONNECTION_TYPE_UNKNOWN = 0

A estimativa do tipo de conexão vigente é desconhecida.

Consulte também
getEffectiveConnectionType

UNBIND_NETWORK_HANDLE

public static final long UNBIND_NETWORK_HANDLE = -1

O valor a ser usado para desfazer qualquer vinculação de rede anterior.

Construtores públicos

CronetEngine

public CronetEngine()

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.

createURLStreamHandlerFactory

public abstract 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 abstract 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 abstract String getVersionString()
Retorna
String

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

newUrlRequestBuilder

public abstract UrlRequest.Builder newUrlRequestBuilder(
    String url,
    UrlRequest.Callback callback,
    Executor executor
)

Cria um builder para UrlRequest. Todos os callbacks para objetos UrlRequest gerados serão invocados nas linhas de execução de executor. executor não pode executar tarefas na linha de execução que chama execute para evitar o bloqueio de operações de rede e causar exceções durante o desligamento.

Parâmetros
String url

URL das solicitações geradas.

UrlRequest.Callback callback

Objeto de callback que é invocado em diferentes eventos.

Executor executor

Executor em que todos os callbacks serão invocados.

openConnection

public abstract 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.

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 abstract 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 abstract 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 abstract 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.