JavaCronetEngine

public final class JavaCronetEngine extends CronetEngineBase


java.net.HttpURLConnection basierte CronetEngine.

Unterstützt keine Netlogs, Messung übertragener Daten, Bidistream, Cache oder Priorität.

Zusammenfassung

Öffentliche Konstruktoren

Öffentliche Methoden

void

Registriert einen Listener, der nach dem Ende jeder Anfrage mit den Anfrageinformationen aufgerufen wird.

void

Registriert einen Listener, der aufgerufen wird, wenn der Schätzer für die Netzwerkqualität eine Stichproben-Roundtrip-Zeit erfasst.

void

Registriert einen Listener, der aufgerufen wird, wenn der Schätzer für die Netzwerkqualität eine Messung des Durchsatzes einer Stichprobe beobachtet.

void
bindToNetwork(long networkHandle)

Bindet die Engine an das angegebene Netzwerk-Handle.

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

Konfiguriert den Schätzer für die Netzwerkqualität für Tests.

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

Erstellt eine URLStreamHandlerFactory zur Verarbeitung von HTTP- und HTTPS-Traffic.

int

Gibt die Anzahl der aktiven Anfragen zurück.

int

Gibt die vom Schätzer für die Netzwerkqualität berechnete Schätzung für den Downstream-Durchsatz (in Kilobit pro Sekunde) zurück.

int

Gibt eine Schätzung des effektiven Verbindungstyps zurück, der vom Schätzer für die Netzwerkqualität berechnet wurde.

byte[]

Diese Methode wurde eingestellt.

In modernen Versionen von Cronet wird immer ein leeres Array zurückgegeben.

int

Gibt die vom Schätzer für die Netzwerkqualität berechnete geschätzte HTTP-RTT (in Millisekunden) zurück.

int

Gibt die vom Schätzer für die Netzwerkqualität berechnete geschätzte Transport-RTT (in Millisekunden) zurück.

String
URLConnection

Stellt eine neue Verbindung zur Ressource her, die durch URLurl angegeben wird.

URLConnection
openConnection(URL url, Proxy proxy)

Stellt eine neue Verbindung zur Ressource her, die durch die URLurl angegeben wird, und verwendet dabei den angegebenen Proxy.

void

Entfernt einen Listener für abgeschlossene Anfragen.

void

Entfernt einen Listener für Round-Trip-Zeiten, wenn er zuvor mit addRttListener registriert wurde.

void

Entfernt einen Listener für den Durchsatz.

void

Fährt CronetEngine herunter, wenn keine aktiven Anfragen vorhanden sind. Andernfalls wird eine Ausnahme ausgelöst.

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

Startet die NetLog-Protokollierung in einem angegebenen Verzeichnis mit einer begrenzten Größe.

void
startNetLogToFile(String fileName, boolean logAll)

Startet die NetLog-Protokollierung in einer Datei.

void

Beendet die NetLog-Protokollierung und schreibt die Datei auf die Festplatte.

Geschützte Methoden

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
)

Übernommene Konstanten

Über org.chromium.net.CronetEngine
static final int

Der Wert der Anzahl aktiver Anfragen ist unbekannt.

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

Geerbte Methoden

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

Erstellt einen Builder für UrlRequest.

Öffentliche Konstruktoren

JavaCronetEngine

public JavaCronetEngine(CronetEngineBuilderImpl builder)

Öffentliche Methoden

addRequestFinishedListener

public void addRequestFinishedListener(RequestFinishedInfo.Listener listener)

Registriert einen Listener, der nach dem Ende jeder Anfrage mit den Anfrageinformationen aufgerufen wird.

Der Listener wird für ein java.util.concurrent.Executor aufgerufen, das vom Listener bereitgestellt wird.

Parameter
RequestFinishedInfo.Listener listener

Der Listener für abgeschlossene Anfragen.

addRttListener

public void addRttListener(NetworkQualityRttListener listener)

Registriert einen Listener, der aufgerufen wird, wenn der Schätzer für die Netzwerkqualität eine Stichproben-Roundtrip-Zeit erfasst. Diese Methode muss nach enableNetworkQualityEstimator aufgerufen werden. Andernfalls wird eine Ausnahme ausgelöst. Die Round-Trip-Zeiten können auf verschiedenen Ebenen des Netzwerk-Stacks aufgezeichnet werden, einschließlich TCP, QUIC und auf der Ebene der URL-Anfrage. Der Listener wird für das java.util.concurrent.Executor aufgerufen, das an enableNetworkQualityEstimator übergeben wird.

Parameter
NetworkQualityRttListener listener

der Listener für Umlaufzeiten.

addThroughputListener

public void addThroughputListener(NetworkQualityThroughputListener listener)

Registriert einen Listener, der aufgerufen wird, wenn der Schätzer für die Netzwerkqualität eine Messung des Durchsatzes einer Stichprobe beobachtet. Diese Funktion muss nach enableNetworkQualityEstimator aufgerufen werden. Der Durchsatz wird berechnet, indem die über die aktive Netzwerkschnittstelle gelesenen Byte zu Zeiten gemessen werden, zu denen mindestens eine URL-Antwort empfangen wird. Der Listener wird für das java.util.concurrent.Executor aufgerufen, das an enableNetworkQualityEstimator übergeben wird.

Parameter
NetworkQualityThroughputListener listener

der Listener für den Durchsatz.

bindToNetwork

public void bindToNetwork(long networkHandle)

Bindet die Engine an das angegebene Netzwerk-Handle. Für alle Anfragen, die über diese Engine erstellt werden, wird das mit diesem Alias verknüpfte Netzwerk verwendet. Wenn die Verbindung zum Netzwerk getrennt wird, schlagen alle Anfragen fehl. Der genaue Fehler hängt davon ab, in welcher Phase der Anfrageverarbeitung die Verbindung zum Netzwerk getrennt wird. Netzwerk-Handles können über Network#getNetworkHandle abgerufen werden. Nur ab Android Marshmallow verfügbar.

Parameter
long networkHandle

Der Netzwerk-Handle, an den die Engine gebunden werden soll. Geben Sie UNBIND_NETWORK_HANDLE an, um die Bindung aufzuheben.

configureNetworkQualityEstimatorForTesting

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

Konfiguriert den Schätzer für die Netzwerkqualität für Tests. Diese Methode muss aufgerufen werden, bevor Listener für die Round-Trip-Zeit und den Durchsatz hinzugefügt werden, und nachdem der Schätzer für die Netzwerkqualität aktiviert wurde.

Parameter
boolean useLocalHostRequests

Anfragen an „localhost“ in Schätzungen einbeziehen.

boolean useSmallerResponses

kleine Antworten in Durchsatzschätzungen einbeziehen.

boolean disableOfflineCheck

Wenn „true“ festgelegt ist, werden die Offlineprüfungen des Geräts beim Berechnen des effektiven Verbindungstyps oder beim Schreiben der Einstellungen deaktiviert.

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

Erstellt eine URLStreamHandlerFactory zur Verarbeitung von HTTP- und HTTPS-Traffic. Eine Instanz dieser Klasse kann über setURLStreamHandlerFactory installiert werden. Diese CronetEngine wird dann standardmäßig für alle Anfragen verwendet, die über openConnection erstellt werden.

Cronet verwendet bestimmte HTTP-Funktionen, die über das System bereitgestellt werden, nicht:

Cronet unterstützt und empfiehlt zwar Anfragen über das HTTPS-Protokoll, bietet aber keine Unterstützung für die HttpsURLConnection API. Diese fehlende Unterstützung umfasst auch die Nichtverwendung bestimmter HTTPS-Funktionen, die über das System bereitgestellt werden:

Gibt Folgendes zurück:
URLStreamHandlerFactory

eine URLStreamHandlerFactory-Instanz, die von dieser CronetEngine implementiert wird.

getActiveRequestCount

public int getActiveRequestCount()

Gibt die Anzahl der aktiven Anfragen zurück.

Eine Anfrage wird mit UrlRequest.start() „aktiv“, sofern für diese Methode keine Ausnahme ausgelöst wird. Sie wird inaktiv, wenn alle Callbacks zurückgegeben wurden und keine zusätzlichen Callbacks mehr ausgelöst werden können. In der Praxis bedeutet das, dass die Anfrage inaktiv ist, sobald „onSucceeded“/„onCanceled“/„onFailed“ zurückgegeben wurde und alle Listener für abgeschlossene Anfragen zurückgegeben wurden. Weitere Informationen finden Sie unter Lebenszyklus von Cronet-Anfragen.

getDownstreamThroughputKbps

public int getDownstreamThroughputKbps()

Gibt die vom Schätzer für die Netzwerkqualität berechnete Schätzung für den Downstream-Durchsatz (in Kilobit pro Sekunde) zurück. Legen Sie den Wert auf CONNECTION_METRIC_UNKNOWN fest, wenn er nicht verfügbar ist. Diese Methode muss nach enableNetworkQualityEstimator aufgerufen werden. Andernfalls wird eine Ausnahme ausgelöst.

Gibt Folgendes zurück:
int

Schätzung des Downstream-Durchsatzes in Kilobit pro Sekunde.

getEffectiveConnectionType

public int getEffectiveConnectionType()

Gibt eine Schätzung des effektiven Verbindungstyps zurück, der vom Schätzer für die Netzwerkqualität berechnet wurde. Rufen Sie enableNetworkQualityEstimator auf, um diesen Wert zu berechnen.

Gibt Folgendes zurück:
int

Der geschätzte Verbindungstyp. Der zurückgegebene Wert ist einer der folgenden: EFFECTIVE_CONNECTION_TYPE_* .

getGlobalMetricsDeltas

public byte[] getGlobalMetricsDeltas()

getHttpRttMs

public int getHttpRttMs()

Gibt die vom Schätzer für die Netzwerkqualität berechnete geschätzte HTTP-RTT (in Millisekunden) zurück. Legen Sie den Wert auf CONNECTION_METRIC_UNKNOWN fest, wenn er nicht verfügbar ist. Diese Methode muss nach enableNetworkQualityEstimator aufgerufen werden. Andernfalls wird eine Ausnahme ausgelöst.

Gibt Folgendes zurück:
int

Schätzung der HTTP-RTT in Millisekunden.

getTransportRttMs

public int getTransportRttMs()

Gibt die vom Schätzer für die Netzwerkqualität berechnete geschätzte Transport-RTT (in Millisekunden) zurück. Legen Sie den Wert auf CONNECTION_METRIC_UNKNOWN fest, wenn er nicht verfügbar ist. Diese Methode muss nach enableNetworkQualityEstimator aufgerufen werden. Andernfalls wird eine Ausnahme ausgelöst.

Gibt Folgendes zurück:
int

Schätzung der Transport-RTT in Millisekunden.

getVersionString

public String getVersionString()
Gibt Folgendes zurück:
String

Ein für Menschen lesbarer Versionsstring der Engine.

openConnection

public URLConnection openConnection(URL url)

Stellt eine neue Verbindung zur Ressource her, die durch URLurl angegeben wird.

Hinweis:Die java.net.HttpURLConnection-Implementierung von Cronet unterliegt bestimmten Einschränkungen. Weitere Informationen finden Sie unter createURLStreamHandlerFactory.

Parameter
URL url

URL der Ressource, zu der eine Verbindung hergestellt werden soll.

Gibt Folgendes zurück:
URLConnection

eine java.net.HttpURLConnection-Instanz, die von dieser CronetEngine implementiert wird.

Löst aus
java.io.IOException

wenn beim Öffnen der Verbindung ein Fehler auftritt.

openConnection

public URLConnection openConnection(URL url, Proxy proxy)

Stellt eine neue Verbindung zur Ressource her, die durch die URLurl angegeben wird, und verwendet dabei den angegebenen Proxy.

Hinweis:Die java.net.HttpURLConnection-Implementierung von Cronet unterliegt bestimmten Einschränkungen. Weitere Informationen finden Sie unter createURLStreamHandlerFactory.

Parameter
URL url

URL der Ressource, zu der eine Verbindung hergestellt werden soll.

Proxy proxy

Proxy, der beim Herstellen der Verbindung verwendet werden soll.

Gibt Folgendes zurück:
URLConnection

eine java.net.HttpURLConnection-Instanz, die von dieser CronetEngine implementiert wird.

Löst aus
java.io.IOException

wenn beim Öffnen der Verbindung ein Fehler auftritt.

removeRequestFinishedListener

public void removeRequestFinishedListener(RequestFinishedInfo.Listener listener)

Entfernt einen Listener für abgeschlossene Anfragen.

Parameter
RequestFinishedInfo.Listener listener

Der zu entfernende Listener.

removeRttListener

public void removeRttListener(NetworkQualityRttListener listener)

Entfernt einen Listener für Round-Trip-Zeiten, wenn er zuvor mit addRttListener registriert wurde. Diese Methode sollte aufgerufen werden, nachdem ein NetworkQualityRttListener hinzugefügt wurde, um keine Beobachtungen mehr zu empfangen.

Parameter
NetworkQualityRttListener listener

der Listener für Umlaufzeiten.

removeThroughputListener

public void removeThroughputListener(NetworkQualityThroughputListener listener)

Entfernt einen Listener für den Durchsatz. Diese Methode sollte aufgerufen werden, nachdem ein NetworkQualityThroughputListener mit addThroughputListener hinzugefügt wurde, um keine Beobachtungen mehr zu empfangen.

Parameter
NetworkQualityThroughputListener listener

der Listener für den Durchsatz.

shutdown

public void shutdown()

Fährt CronetEngine herunter, wenn keine aktiven Anfragen vorhanden sind. Andernfalls wird eine Ausnahme ausgelöst.

Kann nicht im Netzwerk-Thread aufgerufen werden – der Thread, in dem Cronet den Executor aufruft (der sich vom Thread unterscheidet, in dem der Executor Callbacks aufruft). Die Funktion wird möglicherweise blockiert, bis alle Ressourcen des CronetEngine bereinigt wurden.

startNetLogToDisk

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

Startet die NetLog-Protokollierung in einem angegebenen Verzeichnis mit einer begrenzten Größe. Das NetLog enthält Ereignisse, die von allen aktiven CronetEngines ausgegeben werden. Das NetLog ist für das Debugging nützlich. Sobald die Protokollierung beendet wurde stopNetLog, werden die Daten in dirPath in die Datei „netlog.json“ geschrieben. Wenn die Protokollierung unterbrochen wird, können Sie die Dateien im Unterverzeichnis „.inprogress“ manuell zusammenfügen. Verwenden Sie dazu https://chromium.googlesource.com/chromium/src/+/main/net/tools/stitch_net_log_files.py. Das Protokoll kann in einem Chrome-Browser unter chrome://net-internals/#import aufgerufen werden.

Parameter
String dirPath

Das Verzeichnis, in dem die Datei „netlog.json“ erstellt wird. „dirPath“ muss bereits vorhanden sein. NetLog-Dateien dürfen nicht im Verzeichnis vorhanden sein. Wenn aktiv protokolliert wird, wird diese Methode ignoriert.

boolean logAll

true, um grundlegende Ereignisse, Nutzer-Cookies, Anmeldedaten und alle übertragenen Byte in das Log aufzunehmen. Diese Option birgt ein Datenschutzrisiko, da die Anmeldedaten des Nutzers offengelegt werden. Sie sollte nur mit Zustimmung des Nutzers und in Situationen verwendet werden, in denen das Log nicht öffentlich ist. false, um nur grundlegende Ereignisse einzuschließen.

int maxSize

Die maximale Gesamtzahl der Byte an Speicherplatz, die von NetLog verwendet werden sollen. Die tatsächliche Speicherplatznutzung kann dieses Limit geringfügig überschreiten.

startNetLogToFile

public void startNetLogToFile(String fileName, boolean logAll)

Startet die NetLog-Protokollierung in einer Datei. Das NetLog enthält Ereignisse, die von allen aktiven CronetEngines ausgegeben werden. Das NetLog ist für das Debugging nützlich. Die Datei kann in einem Chrome-Browser unter chrome://net-internals/#import aufgerufen werden.

Parameter
String fileName

der vollständige Dateipfad. Darf nicht leer sein. Wenn die Datei vorhanden ist, wird sie vor dem Start abgeschnitten. Wenn aktiv protokolliert wird, wird diese Methode ignoriert.

boolean logAll

true, um grundlegende Ereignisse, Nutzer-Cookies, Anmeldedaten und alle übertragenen Byte in das Log aufzunehmen. Diese Option birgt ein Datenschutzrisiko, da die Anmeldedaten des Nutzers offengelegt werden. Sie sollte nur mit Zustimmung des Nutzers und in Situationen verwendet werden, in denen das Log nicht öffentlich ist. false, um nur grundlegende Ereignisse einzuschließen.

stopNetLog

public void stopNetLog()

Beendet die NetLog-Protokollierung und schreibt die Datei auf die Festplatte. Wenn keine Protokollierungssitzung läuft, wird dieser Aufruf ignoriert.

Geschützte Methoden

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
)