CronetEngine

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

const Int

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

const Int

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

const Int

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

const Int

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

const Int

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

const Int

O dispositivo está off-line.

const Int

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

const Int

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

const Long

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

Construtores públicos

Funções públicas

Unit

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

Unit

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

Unit

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

Unit
bindToNetwork(networkHandle: Long)

Vincula o mecanismo ao identificador de rede especificado.

Unit
configureNetworkQualityEstimatorForTesting(
    useLocalHostRequests: Boolean,
    useSmallerResponses: Boolean,
    disableOfflineCheck: Boolean
)

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 ByteArray<Byte>!

Essa função foi descontinuada.

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(
    url: String!,
    callback: UrlRequest.Callback!,
    executor: Executor!
)

Cria um builder para UrlRequest.

abstract URLConnection!

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

Unit

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

Unit

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

Unit

Remove um listener de taxa de transferência.

abstract Unit

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

Unit
startNetLogToDisk(dirPath: String!, logAll: Boolean, maxSize: Int)

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

abstract Unit
startNetLogToFile(fileName: String!, logAll: Boolean)

Inicia o registro do NetLog em um arquivo.

abstract Unit

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

Constantes

ACTIVE_REQUEST_COUNT_UNKNOWN

const val ACTIVE_REQUEST_COUNT_UNKNOWN = -1: Int

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

CONNECTION_METRIC_UNKNOWN

const val CONNECTION_METRIC_UNKNOWN = -1: Int

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

EFFECTIVE_CONNECTION_TYPE_2G

const val EFFECTIVE_CONNECTION_TYPE_2G = 3: Int

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

Consulte também
getEffectiveConnectionType

EFFECTIVE_CONNECTION_TYPE_3G

const val EFFECTIVE_CONNECTION_TYPE_3G = 4: Int

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

Consulte também
getEffectiveConnectionType

EFFECTIVE_CONNECTION_TYPE_4G

const val EFFECTIVE_CONNECTION_TYPE_4G = 5: Int

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

Consulte também
getEffectiveConnectionType

EFFECTIVE_CONNECTION_TYPE_OFFLINE

const val EFFECTIVE_CONNECTION_TYPE_OFFLINE = 1: Int

O dispositivo está off-line.

Consulte também
getEffectiveConnectionType

EFFECTIVE_CONNECTION_TYPE_SLOW_2G

const val EFFECTIVE_CONNECTION_TYPE_SLOW_2G = 2: Int

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

Consulte também
getEffectiveConnectionType

EFFECTIVE_CONNECTION_TYPE_UNKNOWN

const val EFFECTIVE_CONNECTION_TYPE_UNKNOWN = 0: Int

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

Consulte também
getEffectiveConnectionType

UNBIND_NETWORK_HANDLE

const val UNBIND_NETWORK_HANDLE = -1: Long

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

Construtores públicos

CronetEngine

CronetEngine()

Funções públicas

addRequestFinishedListener

fun addRequestFinishedListener(listener: RequestFinishedInfo.Listener!): Unit

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
listener: RequestFinishedInfo.Listener!

o listener para solicitações concluídas.

addRttListener

fun addRttListener(listener: NetworkQualityRttListener!): Unit

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
listener: NetworkQualityRttListener!

o listener de tempos de retorno.

addThroughputListener

fun addThroughputListener(listener: NetworkQualityThroughputListener!): Unit

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
listener: NetworkQualityThroughputListener!

o listener de capacidade de transmissão.

bindToNetwork

fun bindToNetwork(networkHandle: Long): Unit

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
networkHandle: Long

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

configureNetworkQualityEstimatorForTesting

fun configureNetworkQualityEstimatorForTesting(
    useLocalHostRequests: Boolean,
    useSmallerResponses: Boolean,
    disableOfflineCheck: Boolean
): Unit

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
useLocalHostRequests: Boolean

incluir solicitações para localhost nas estimativas.

useSmallerResponses: Boolean

incluir respostas pequenas nas estimativas de capacidade.

disableOfflineCheck: Boolean

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

abstract fun createURLStreamHandlerFactory(): URLStreamHandlerFactory!

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

fun getActiveRequestCount(): Int

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

fun getDownstreamThroughputKbps(): Int

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

fun getEffectiveConnectionType(): Int

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

abstract fun getGlobalMetricsDeltas(): ByteArray<Byte>!

getHttpRttMs

fun getHttpRttMs(): Int

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

fun getTransportRttMs(): Int

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

abstract fun getVersionString(): String!
Retorna
String!

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

newUrlRequestBuilder

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

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
url: String!

URL das solicitações geradas.

callback: UrlRequest.Callback!

Objeto de callback que é invocado em diferentes eventos.

executor: Executor!

Executor em que todos os callbacks serão invocados.

openConnection

abstract fun openConnection(url: URL!): URLConnection!

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

fun removeRequestFinishedListener(listener: RequestFinishedInfo.Listener!): Unit

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

Parâmetros
listener: RequestFinishedInfo.Listener!

o listener a ser removido.

removeRttListener

fun removeRttListener(listener: NetworkQualityRttListener!): Unit

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
listener: NetworkQualityRttListener!

o listener de tempos de retorno.

removeThroughputListener

fun removeThroughputListener(listener: NetworkQualityThroughputListener!): Unit

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
listener: NetworkQualityThroughputListener!

o listener de capacidade de transmissão.

shutdown

abstract fun shutdown(): Unit

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

fun startNetLogToDisk(dirPath: String!, logAll: Boolean, maxSize: Int): Unit

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
dirPath: String!

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.

logAll: Boolean

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.

maxSize: Int

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

abstract fun startNetLogToFile(fileName: String!, logAll: Boolean): Unit

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
fileName: String!

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.

logAll: Boolean

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

abstract fun stopNetLog(): Unit

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.