CronetEngine

public abstract class CronetEngine

Bekannte direkte Unterklassen
Bekannte indirekte Unterklassen

Eine Engine zur Verarbeitung von UrlRequests, die den besten HTTP-Stack verwendet, der auf der aktuellen Plattform verfügbar ist. Eine Instanz dieser Klasse kann mit Builder erstellt werden.

Zusammenfassung

Verschachtelte Typen

Ein Builder für CronetEngine, der die Laufzeitkonfiguration von CronetEngine ermöglicht.

Eine Klasse, die eine Methode zum Laden der nativen Cronet-Bibliothek bereitstellt.

Konstanten

static final int

Der Wert der Anzahl aktiver Anfragen ist unbekannt.

static final int

Der Wert eines Verbindungsmesswerts ist unbekannt.

static final int

Der geschätzte effektive Verbindungstyp ist 2G.

static final int

Die Schätzung des effektiven Verbindungstyps ist „3G“.

static final int

Die Schätzung des effektiven Verbindungstyps ist 4G.

static final int

Das Gerät ist offline.

static final int

Die Schätzung des effektiven Verbindungstyps ist „Langsame 2G-Verbindung“.

static final int

Die Schätzung des effektiven Verbindungstyps ist unbekannt.

static final long

Der Wert, der zum Aufheben einer vorherigen Netzwerkbindung verwendet werden soll.

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

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

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

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

Erstellt einen Builder für UrlRequest.

abstract URLConnection

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

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.

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

abstract void
startNetLogToFile(String fileName, boolean logAll)

Startet die NetLog-Protokollierung in einer Datei.

abstract void

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

Konstanten

ACTIVE_REQUEST_COUNT_UNKNOWN

public static final int ACTIVE_REQUEST_COUNT_UNKNOWN = -1

Der Wert der Anzahl aktiver Anfragen ist unbekannt.

CONNECTION_METRIC_UNKNOWN

public static final int CONNECTION_METRIC_UNKNOWN = -1

Der Wert eines Verbindungsmesswerts ist unbekannt.

EFFECTIVE_CONNECTION_TYPE_2G

public static final int EFFECTIVE_CONNECTION_TYPE_2G = 3

Der geschätzte effektive Verbindungstyp ist 2G.

Weitere Informationen
getEffectiveConnectionType

EFFECTIVE_CONNECTION_TYPE_3G

public static final int EFFECTIVE_CONNECTION_TYPE_3G = 4

Die Schätzung des effektiven Verbindungstyps ist „3G“.

Weitere Informationen
getEffectiveConnectionType

EFFECTIVE_CONNECTION_TYPE_4G

public static final int EFFECTIVE_CONNECTION_TYPE_4G = 5

Die Schätzung des effektiven Verbindungstyps ist 4G.

Weitere Informationen
getEffectiveConnectionType

EFFECTIVE_CONNECTION_TYPE_OFFLINE

public static final int EFFECTIVE_CONNECTION_TYPE_OFFLINE = 1

Das Gerät ist offline.

Weitere Informationen
getEffectiveConnectionType

EFFECTIVE_CONNECTION_TYPE_SLOW_2G

public static final int EFFECTIVE_CONNECTION_TYPE_SLOW_2G = 2

Die Schätzung des effektiven Verbindungstyps ist „Langsame 2G-Verbindung“.

Weitere Informationen
getEffectiveConnectionType

EFFECTIVE_CONNECTION_TYPE_UNKNOWN

public static final int EFFECTIVE_CONNECTION_TYPE_UNKNOWN = 0

Die Schätzung des effektiven Verbindungstyps ist unbekannt.

Weitere Informationen
getEffectiveConnectionType

UNBIND_NETWORK_HANDLE

public static final long UNBIND_NETWORK_HANDLE = -1

Der Wert, der zum Aufheben einer vorherigen Netzwerkbindung verwendet werden soll.

Öffentliche Konstruktoren

CronetEngine

public CronetEngine()

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

createURLStreamHandlerFactory

public abstract 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 abstract 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 abstract String getVersionString()
Gibt Folgendes zurück:
String

Ein für Menschen lesbarer Versionsstring der Engine.

newUrlRequestBuilder

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

Erstellt einen Builder für UrlRequest. Alle Callbacks für generierte UrlRequest-Objekte werden in den Threads von executor aufgerufen. executor darf keine Aufgaben im Thread ausführen, der execute aufruft, um Netzwerkoperationen nicht zu blockieren und Ausnahmen beim Herunterfahren zu vermeiden.

Parameter
String url

URL für die generierten Anfragen.

UrlRequest.Callback callback

Callback-Objekt, das bei verschiedenen Ereignissen aufgerufen wird.

Executor executor

Executor, in dem alle Callbacks aufgerufen werden.

openConnection

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

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 abstract 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 abstract 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 abstract void stopNetLog()

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