CronetEngine

public abstract class CronetEngine

Sottoclassi dirette note
Sottoclassi indirette note
JavaCronetEngine

java.net.HttpURLConnection ha eseguito il backup di CronetEngine.


Un motore per l'elaborazione dei UrlRequest, che utilizza lo stack HTTP migliore disponibile sulla piattaforma attuale. È possibile creare un'istanza di questa classe utilizzando Builder.

Riepilogo

Tipi nidificati

Un builder per CronetEngine, che consente la configurazione di runtime di CronetEngine.

Una classe che fornisce un metodo per caricare la libreria nativa di Cronet.

Costanti

static final int

Il valore del conteggio delle richieste attive è sconosciuto

static final int

Il valore di una metrica di connessione è sconosciuto.

static final int

La stima del tipo effettivo di connessione è 2G.

static final int

La stima del tipo effettivo di connessione è 3G.

static final int

La stima del tipo effettivo di connessione è 4G.

static final int

Il dispositivo è offline.

static final int

La stima del tipo effettivo di connessione è 2G lento.

static final int

La stima del tipo effettivo di connessione è sconosciuta.

static final long

Il valore da utilizzare per annullare qualsiasi associazione di rete precedente.

Costruttori pubblici

Metodi pubblici

void

Registra un listener che viene chiamato dopo la fine di ogni richiesta con le informazioni sulla richiesta.

void

Registra un listener che viene chiamato ogni volta che lo strumento di stima della qualità della rete rileva un tempo di andata e ritorno del campione.

void

Registra un listener che viene chiamato ogni volta che lo strumento di stima della qualità della rete rileva una misurazione della velocità effettiva del campione.

void
bindToNetwork(long networkHandle)

Esegue il binding del motore all'handle di rete specificato.

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

Configura lo strumento di stima della qualità della rete per i test.

abstract URLStreamHandlerFactory

Crea un URLStreamHandlerFactory per gestire il traffico HTTP e HTTPS.

int

Restituisce il numero di richieste attive.

int

Restituisce la stima della velocità effettiva downstream (in kilobit al secondo) calcolata dallo strumento di stima della qualità della rete.

int

Restituisce una stima del tipo di connessione effettivo calcolato dallo strumento di stima della qualità della rete.

abstract byte[]

Questo metodo è obsoleto.

Nelle versioni moderne di Cronet, questo valore restituirà sempre un array vuoto.

int

Restituisce la stima del RTT HTTP (in millisecondi) calcolata dallo strumento di stima della qualità della rete.

int

Restituisce la stima dell'RTT di trasporto (in millisecondi) calcolata dallo strumento di stima della qualità della rete.

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

Crea un builder per UrlRequest.

abstract URLConnection

Stabilisce una nuova connessione alla risorsa specificata da URLurl.

void

Rimuove un listener di richieste completate.

void

Rimuove un listener dei tempi di andata e ritorno se registrato in precedenza con addRttListener.

void

Rimuove un listener di throughput.

abstract void

Arresta CronetEngine se non ci sono richieste attive, altrimenti genera un'eccezione.

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

Avvia la registrazione di NetLog in una directory specificata con una dimensione limitata.

abstract void
startNetLogToFile(String fileName, boolean logAll)

Avvia la registrazione di NetLog in un file.

abstract void

Interrompe la registrazione di NetLog e scarica il file sul disco.

Costanti

ACTIVE_REQUEST_COUNT_UNKNOWN

public static final int ACTIVE_REQUEST_COUNT_UNKNOWN = -1

Il valore del conteggio delle richieste attive è sconosciuto

CONNECTION_METRIC_UNKNOWN

public static final int CONNECTION_METRIC_UNKNOWN = -1

Il valore di una metrica di connessione è sconosciuto.

EFFECTIVE_CONNECTION_TYPE_2G

public static final int EFFECTIVE_CONNECTION_TYPE_2G = 3

La stima del tipo effettivo di connessione è 2G.

EFFECTIVE_CONNECTION_TYPE_3G

public static final int EFFECTIVE_CONNECTION_TYPE_3G = 4

La stima del tipo effettivo di connessione è 3G.

EFFECTIVE_CONNECTION_TYPE_4G

public static final int EFFECTIVE_CONNECTION_TYPE_4G = 5

La stima del tipo effettivo di connessione è 4G.

EFFECTIVE_CONNECTION_TYPE_OFFLINE

public static final int EFFECTIVE_CONNECTION_TYPE_OFFLINE = 1

Il dispositivo è offline.

EFFECTIVE_CONNECTION_TYPE_SLOW_2G

public static final int EFFECTIVE_CONNECTION_TYPE_SLOW_2G = 2

La stima del tipo effettivo di connessione è 2G lento.

EFFECTIVE_CONNECTION_TYPE_UNKNOWN

public static final int EFFECTIVE_CONNECTION_TYPE_UNKNOWN = 0

La stima del tipo effettivo di connessione è sconosciuta.

UNBIND_NETWORK_HANDLE

public static final long UNBIND_NETWORK_HANDLE = -1

Il valore da utilizzare per annullare qualsiasi associazione di rete precedente.

Costruttori pubblici

CronetEngine

public CronetEngine()

Metodi pubblici

addRequestFinishedListener

public void addRequestFinishedListener(RequestFinishedInfo.Listener listener)

Registra un listener che viene chiamato dopo la fine di ogni richiesta con le informazioni sulla richiesta.

Il listener viene chiamato su un java.util.concurrent.Executor fornito dal listener.

Parametri
RequestFinishedInfo.Listener listener

il listener per le richieste completate.

addRttListener

public void addRttListener(NetworkQualityRttListener listener)

Registra un listener che viene chiamato ogni volta che lo strumento di stima della qualità della rete rileva un tempo di andata e ritorno del campione. Questo metodo deve essere chiamato dopo enableNetworkQualityEstimator e genererà un'eccezione in caso contrario. I tempi di andata e ritorno possono essere registrati in vari livelli dello stack di rete, tra cui TCP, QUIC e nel livello di richiesta URL. Il listener viene chiamato sul java.util.concurrent.Executor passato a enableNetworkQualityEstimator.

Parametri
NetworkQualityRttListener listener

il listener dei tempi di round trip.

addThroughputListener

public void addThroughputListener(NetworkQualityThroughputListener listener)

Registra un listener che viene chiamato ogni volta che lo strumento di stima della qualità della rete rileva una misurazione della velocità effettiva del campione. Deve essere chiamato dopo enableNetworkQualityEstimator. Le osservazioni sul throughput vengono calcolate misurando i byte letti sull'interfaccia di rete attiva nei momenti in cui viene ricevuta almeno una risposta URL. Il listener viene chiamato sul java.util.concurrent.Executor passato a enableNetworkQualityEstimator.

Parametri
NetworkQualityThroughputListener listener

il listener del throughput.

bindToNetwork

public void bindToNetwork(long networkHandle)

Esegue il binding del motore all'handle di rete specificato. Tutte le richieste create tramite questo motore utilizzeranno la rete associata a questo handle. Se questa rete si disconnette, tutte le richieste non andranno a buon fine. L'errore esatto dipende dalla fase di elaborazione della richiesta al momento della disconnessione della rete. Gli handle di rete possono essere ottenuti tramite Network#getNetworkHandle. Disponibile solo a partire da Android Marshmallow.

Parametri
long networkHandle

l'handle di rete a cui associare il motore. Specifica UNBIND_NETWORK_HANDLE per annullare l'associazione.

configureNetworkQualityEstimatorForTesting

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

Configura lo strumento di stima della qualità della rete per i test. Questo metodo deve essere chiamato prima che vengano aggiunti i listener del tempo di andata e ritorno e del throughput e dopo che è stato attivato lo strumento di stima della qualità della rete.

Parametri
boolean useLocalHostRequests

includere le richieste a localhost nelle stime.

boolean useSmallerResponses

includere piccole risposte nelle stime del throughput.

boolean disableOfflineCheck

Se impostato su true, disattiva i controlli offline del dispositivo durante il calcolo del tipo di connessione effettivo o durante la scrittura delle preferenze.

createURLStreamHandlerFactory

public abstract URLStreamHandlerFactory createURLStreamHandlerFactory()

Crea un URLStreamHandlerFactory per gestire il traffico HTTP e HTTPS. Un'istanza di questa classe può essere installata tramite setURLStreamHandlerFactory, utilizzando così questo CronetEngine per impostazione predefinita per tutte le richieste create tramite openConnection.

Cronet non utilizza determinate funzionalità HTTP fornite tramite il sistema:

Sebbene Cronet supporti e incoraggi le richieste che utilizzano il protocollo HTTPS, non fornisce supporto per l'API HttpsURLConnection. Questa mancanza di supporto include anche il mancato utilizzo di determinate funzionalità HTTPS fornite tramite il sistema:

Resi
URLStreamHandlerFactory

un'istanza URLStreamHandlerFactory implementata da questo CronetEngine.

getActiveRequestCount

public int getActiveRequestCount()

Restituisce il numero di richieste attive.

Una richiesta diventa "attiva" in UrlRequest.start(), supponendo che il metodo non generi un'eccezione. Diventa inattivo quando tutti i callback sono stati restituiti e non è possibile attivare callback aggiuntivi in futuro. In pratica, la richiesta è inattiva una volta che onSucceeded/onCanceled/onFailed è stato restituito e tutti i listener di fine richiesta sono stati restituiti. Ciclo di vita delle richieste Cronet per ulteriori informazioni.

getDownstreamThroughputKbps

public int getDownstreamThroughputKbps()

Restituisce la stima della velocità effettiva downstream (in kilobit al secondo) calcolata dallo strumento di stima della qualità della rete. Imposta CONNECTION_METRIC_UNKNOWN se il valore non è disponibile. Questo metodo deve essere chiamato dopo enableNetworkQualityEstimator, altrimenti verrà generata un'eccezione.

Resi
int

Stima del throughput downstream in kilobit al secondo.

getEffectiveConnectionType

public int getEffectiveConnectionType()

Restituisce una stima del tipo di connessione effettivo calcolato dallo strumento di stima della qualità della rete. Chiama enableNetworkQualityEstimator per iniziare a calcolare questo valore.

Resi
int

il tipo di connessione stimato. Il valore restituito è uno dei seguenti: EFFECTIVE_CONNECTION_TYPE_* .

getGlobalMetricsDeltas

public abstract byte[] getGlobalMetricsDeltas()

getHttpRttMs

public int getHttpRttMs()

Restituisce la stima del RTT HTTP (in millisecondi) calcolata dallo strumento di stima della qualità della rete. Imposta CONNECTION_METRIC_UNKNOWN se il valore non è disponibile. Questo metodo deve essere chiamato dopo enableNetworkQualityEstimator, altrimenti verrà generata un'eccezione.

Resi
int

Stima dell'RTT HTTP in millisecondi.

getTransportRttMs

public int getTransportRttMs()

Restituisce la stima dell'RTT di trasporto (in millisecondi) calcolata dallo strumento di stima della qualità della rete. Imposta CONNECTION_METRIC_UNKNOWN se il valore non è disponibile. Questo metodo deve essere chiamato dopo enableNetworkQualityEstimator, altrimenti verrà generata un'eccezione.

Resi
int

Stima dell'RTT di trasporto in millisecondi.

getVersionString

public abstract String getVersionString()
Resi
String

una stringa di versione del motore leggibile.

newUrlRequestBuilder

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

Crea un builder per UrlRequest. Tutte le callback per gli oggetti UrlRequest generati verranno richiamate sui thread di executor. executor non deve eseguire attività sul thread che chiama execute per evitare di bloccare le operazioni di rete e causare eccezioni durante l'arresto.

Parametri
String url

URL per le richieste generate.

UrlRequest.Callback callback

oggetto di callback richiamato in diversi eventi.

Executor executor

Executor su cui verranno richiamate tutte le callback.

openConnection

public abstract URLConnection openConnection(URL url)

Stabilisce una nuova connessione alla risorsa specificata da URLurl.

Nota:l'implementazione di java.net.HttpURLConnection di Cronet è soggetta a determinate limitazioni. Per ulteriori dettagli, consulta createURLStreamHandlerFactory.

Parametri
URL url

URL della risorsa a cui connettersi.

Resi
URLConnection

un'istanza java.net.HttpURLConnection implementata da questo CronetEngine.

Genera
java.io.IOException

se si verifica un errore durante l'apertura della connessione.

removeRequestFinishedListener

public void removeRequestFinishedListener(RequestFinishedInfo.Listener listener)

Rimuove un listener di richieste completate.

Parametri
RequestFinishedInfo.Listener listener

l'ascoltatore da rimuovere.

removeRttListener

public void removeRttListener(NetworkQualityRttListener listener)

Rimuove un listener dei tempi di andata e ritorno se registrato in precedenza con addRttListener. Questo metodo deve essere chiamato dopo l'aggiunta di un NetworkQualityRttListener per interrompere la ricezione delle osservazioni.

Parametri
NetworkQualityRttListener listener

il listener dei tempi di round trip.

removeThroughputListener

public void removeThroughputListener(NetworkQualityThroughputListener listener)

Rimuove un listener di throughput. Questo metodo deve essere chiamato dopo l'aggiunta di un NetworkQualityThroughputListener con addThroughputListener per interrompere la ricezione delle osservazioni.

Parametri
NetworkQualityThroughputListener listener

il listener del throughput.

shutdown

public abstract void shutdown()

Arresta CronetEngine se non ci sono richieste attive, altrimenti genera un'eccezione.

Non può essere chiamato sul thread di rete, ovvero il thread in cui Cronet chiama Executor (che è diverso dal thread in cui Executor richiama i callback). Potrebbe bloccare fino a quando non saranno state rimosse tutte le risorse di CronetEngine.

startNetLogToDisk

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

Avvia la registrazione di NetLog in una directory specificata con una dimensione limitata. Il log di rete conterrà gli eventi emessi da tutti i CronetEngine attivi. Il log di rete è utile per il debug. Una volta interrotta la registrazione stopNetLog, i dati verranno scritti in netlog.json in dirPath. Se la registrazione viene interrotta, puoi unire manualmente i file trovati nella sottodirectory .inprogress utilizzando: https://chromium.googlesource.com/chromium/src/+/main/net/tools/stitch_net_log_files.py. Il log può essere visualizzato utilizzando un browser Chrome all'indirizzo chrome://net-internals/#import.

Parametri
String dirPath

la directory in cui verrà creato il file netlog.json. dirPath deve già esistere. I file NetLog non devono esistere nella directory. Se il logging è attivo, questo metodo viene ignorato.

boolean logAll

true per includere eventi di base, cookie utente, credenziali e tutti i byte trasferiti nel log. Questa opzione presenta un rischio per la privacy, in quanto espone le credenziali dell'utente e deve essere utilizzata solo con il consenso dell'utente e in situazioni in cui il log non sarà pubblico. false per includere solo gli eventi di base.

int maxSize

lo spazio su disco totale massimo in byte che deve essere utilizzato da NetLog. L'utilizzo effettivo dello spazio su disco potrebbe superare leggermente questo limite.

startNetLogToFile

public abstract void startNetLogToFile(String fileName, boolean logAll)

Avvia la registrazione di NetLog in un file. Il log di rete conterrà gli eventi emessi da tutti i CronetEngine attivi. Il log di rete è utile per il debug. Il file può essere visualizzato utilizzando un browser Chrome all'indirizzo chrome://net-internals/#import

Parametri
String fileName

il percorso file completo. Non deve essere vuoto. Se il file esiste, viene troncato prima dell'inizio. Se il logging è attivo, questo metodo viene ignorato.

boolean logAll

true per includere eventi di base, cookie utente, credenziali e tutti i byte trasferiti nel log. Questa opzione presenta un rischio per la privacy, in quanto espone le credenziali dell'utente e deve essere utilizzata solo con il consenso dell'utente e in situazioni in cui il log non sarà pubblico. false per includere solo gli eventi di base.

stopNetLog

public abstract void stopNetLog()

Interrompe la registrazione di NetLog e scarica il file sul disco. Se non è in corso una sessione di registrazione, questa chiamata viene ignorata.