JavaCronetEngine

public final class JavaCronetEngine extends CronetEngineBase


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

Non supporta netlog, misurazione dei dati trasferiti, bidistream, cache o priorità.

Riepilogo

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.

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

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.

String
URLConnection

Stabilisce una nuova connessione alla risorsa specificata da URLurl.

URLConnection
openConnection(URL url, Proxy proxy)

Stabilisce una nuova connessione alla risorsa specificata da URLurl utilizzando il proxy specificato.

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.

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.

void
startNetLogToFile(String fileName, boolean logAll)

Avvia la registrazione di NetLog in un file.

void

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

Metodi protetti

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
)

Costanti ereditate

Da org.chromium.net.CronetEngine
static final int

Il valore del conteggio delle richieste attive è sconosciuto

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

Metodi ereditati

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

Crea un builder per UrlRequest.

Costruttori pubblici

JavaCronetEngine

public JavaCronetEngine(CronetEngineBuilderImpl builder)

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.

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 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 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 String getVersionString()
Resi
String

una stringa di versione del motore leggibile.

openConnection

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

openConnection

public URLConnection openConnection(URL url, Proxy proxy)

Stabilisce una nuova connessione alla risorsa specificata da URLurl utilizzando il proxy specificato.

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.

Proxy proxy

proxy da utilizzare per stabilire la connessione.

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

Metodi protetti

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
)