CronetEngine

public abstract class CronetEngine

Sous-classes directes connues
Sous-classes indirectes connues
JavaCronetEngine

CronetEngine soutenu par java.net.HttpURLConnection.


Moteur de traitement des UrlRequest, qui utilise la meilleure pile HTTP disponible sur la plate-forme actuelle. Une instance de cette classe peut être créée à l'aide de Builder.

Résumé

Types imbriqués

Compilateur pour les CronetEngine, qui permet la configuration du temps d'exécution de CronetEngine.

Classe qui fournit une méthode pour charger la bibliothèque native Cronet.

Constantes

static final int

La valeur du nombre de requêtes actives est inconnue

static final int

La valeur d'une métrique de connexion est inconnue.

static final int

Le type de connexion effectif estimé est la 2G.

static final int

Le type de connexion effectif estimé est la 3G.

static final int

Le type de connexion effectif estimé est la 4G.

static final int

L'appareil est hors connexion.

static final int

Le type de connexion compatible estimé est la 2G lente.

static final int

L'estimation du type de connexion effectif est inconnue.

static final long

Valeur à utiliser pour annuler toute liaison réseau précédente.

Constructeurs publics

Méthodes publiques

void

Enregistre un écouteur qui est appelé après la fin de chaque requête avec les informations de la requête.

void

Enregistre un écouteur qui est appelé chaque fois que l'estimateur de qualité du réseau constate un temps d'aller-retour d'échantillon.

void

Enregistre un écouteur qui est appelé chaque fois que l'estimateur de qualité du réseau observe une mesure du débit d'échantillon.

void
bindToNetwork(long networkHandle)

Lie le moteur au handle réseau spécifié.

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

Configure l'estimateur de qualité du réseau pour les tests.

abstract URLStreamHandlerFactory

Crée un URLStreamHandlerFactory pour gérer le trafic HTTP et HTTPS.

int

Renvoie le nombre de requêtes actives.

int

Renvoie l'estimation du débit descendant (en kilobits par seconde) calculée par l'estimateur de qualité du réseau.

int

Renvoie une estimation du type de connexion effectif calculé par l'estimateur de qualité du réseau.

abstract byte[]

Cette méthode est obsolète.

Dans les versions modernes de Cronet, cette méthode renvoie toujours un tableau vide.

int

Renvoie l'estimation du temps d'aller-retour HTTP (en millisecondes) calculée par l'estimateur de qualité du réseau.

int

Renvoie l'estimation du RTT de transport (en millisecondes) calculée par l'estimateur de qualité du réseau.

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

Crée un compilateur pour UrlRequest.

abstract URLConnection

Établit une nouvelle connexion à la ressource spécifiée par URLurl.

void

Supprime un écouteur de requête terminée.

void

Supprime un écouteur des temps d'aller-retour s'il a été précédemment enregistré avec addRttListener.

void

Supprime un écouteur de débit.

abstract void

Arrête le CronetEngine s'il n'y a aucune requête active, sinon génère une exception.

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

Démarre la journalisation NetLog dans un répertoire spécifié avec une taille limitée.

abstract void
startNetLogToFile(String fileName, boolean logAll)

Démarre la consignation NetLog dans un fichier.

abstract void

Arrête la journalisation NetLog et vide le fichier sur le disque.

Constantes

ACTIVE_REQUEST_COUNT_UNKNOWN

public static final int ACTIVE_REQUEST_COUNT_UNKNOWN = -1

La valeur du nombre de requêtes actives est inconnue

CONNECTION_METRIC_UNKNOWN

public static final int CONNECTION_METRIC_UNKNOWN = -1

La valeur d'une métrique de connexion est inconnue.

EFFECTIVE_CONNECTION_TYPE_2G

public static final int EFFECTIVE_CONNECTION_TYPE_2G = 3

Le type de connexion effectif estimé est la 2G.

EFFECTIVE_CONNECTION_TYPE_3G

public static final int EFFECTIVE_CONNECTION_TYPE_3G = 4

Le type de connexion effectif estimé est la 3G.

EFFECTIVE_CONNECTION_TYPE_4G

public static final int EFFECTIVE_CONNECTION_TYPE_4G = 5

Le type de connexion effectif estimé est la 4G.

EFFECTIVE_CONNECTION_TYPE_OFFLINE

public static final int EFFECTIVE_CONNECTION_TYPE_OFFLINE = 1

L'appareil est hors connexion.

EFFECTIVE_CONNECTION_TYPE_SLOW_2G

public static final int EFFECTIVE_CONNECTION_TYPE_SLOW_2G = 2

Le type de connexion compatible estimé est la 2G lente.

EFFECTIVE_CONNECTION_TYPE_UNKNOWN

public static final int EFFECTIVE_CONNECTION_TYPE_UNKNOWN = 0

L'estimation du type de connexion effectif est inconnue.

UNBIND_NETWORK_HANDLE

public static final long UNBIND_NETWORK_HANDLE = -1

Valeur à utiliser pour annuler toute liaison réseau précédente.

Constructeurs publics

CronetEngine

public CronetEngine()

Méthodes publiques

addRequestFinishedListener

public void addRequestFinishedListener(RequestFinishedInfo.Listener listener)

Enregistre un écouteur qui est appelé après la fin de chaque requête avec les informations de la requête.

L'écouteur est appelé sur un java.util.concurrent.Executor fourni par l'écouteur.

Paramètres
RequestFinishedInfo.Listener listener

Écouteur pour les requêtes terminées.

addRttListener

public void addRttListener(NetworkQualityRttListener listener)

Enregistre un écouteur qui est appelé chaque fois que l'estimateur de qualité du réseau constate un temps d'aller-retour d'échantillon. Cette méthode doit être appelée après enableNetworkQualityEstimator, sinon une exception sera générée. Les temps d'aller-retour peuvent être enregistrés à différents niveaux de la pile réseau, y compris TCP, QUIC et au niveau de la requête d'URL. L'écouteur est appelé sur le java.util.concurrent.Executor transmis à enableNetworkQualityEstimator.

Paramètres
NetworkQualityRttListener listener

l'écouteur des délais aller-retour.

addThroughputListener

public void addThroughputListener(NetworkQualityThroughputListener listener)

Enregistre un écouteur qui est appelé chaque fois que l'estimateur de qualité du réseau observe une mesure du débit d'échantillon. Cette méthode doit être appelée après enableNetworkQualityEstimator. Les observations du débit sont calculées en mesurant les octets lus sur l'interface réseau active lorsque au moins une réponse d'URL est reçue. L'écouteur est appelé sur le java.util.concurrent.Executor transmis à enableNetworkQualityEstimator.

Paramètres
NetworkQualityThroughputListener listener

l'écouteur du débit.

bindToNetwork

public void bindToNetwork(long networkHandle)

Lie le moteur au handle réseau spécifié. Toutes les demandes créées via ce moteur utiliseront le réseau associé à ce compte. Si ce réseau se déconnecte, toutes les requêtes échoueront. L'erreur exacte dépendra de l'étape de traitement de la requête au moment de la déconnexion du réseau. Les identifiants réseau peuvent être obtenus via Network#getNetworkHandle. Disponible uniquement à partir d'Android Marshmallow.

Paramètres
long networkHandle

Handle réseau auquel associer le moteur. Spécifiez UNBIND_NETWORK_HANDLE pour dissocier.

configureNetworkQualityEstimatorForTesting

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

Configure l'estimateur de qualité du réseau pour les tests. Cette méthode doit être appelée avant l'ajout des écouteurs de temps d'aller-retour et de débit, et après l'activation de l'estimateur de qualité du réseau.

Paramètres
boolean useLocalHostRequests

inclure les requêtes adressées à localhost dans les estimations.

boolean useSmallerResponses

inclure les petites réponses dans les estimations du débit.

boolean disableOfflineCheck

Si la valeur est définie sur "true", les vérifications de l'état hors connexion de l'appareil sont désactivées lors du calcul du type de connexion effectif ou lors de l'écriture des préférences.

createURLStreamHandlerFactory

public abstract URLStreamHandlerFactory createURLStreamHandlerFactory()

Crée un URLStreamHandlerFactory pour gérer le trafic HTTP et HTTPS. Une instance de cette classe peut être installée via setURLStreamHandlerFactory, ce qui permet d'utiliser cette CronetEngine par défaut pour toutes les requêtes créées via openConnection.

Cronet n'utilise pas certaines fonctionnalités HTTP fournies par le système :

Bien que Cronet accepte et encourage les requêtes utilisant le protocole HTTPS, il n'est pas compatible avec l'API HttpsURLConnection. Ce manque de compatibilité inclut également l'impossibilité d'utiliser certaines fonctionnalités HTTPS fournies par le système :

Renvoie
URLStreamHandlerFactory

une instance URLStreamHandlerFactory implémentée par ce CronetEngine.

getActiveRequestCount

public int getActiveRequestCount()

Renvoie le nombre de requêtes actives.

Une requête devient "active" dans UrlRequest.start(), en supposant que cette méthode ne génère pas d'exception. Il devient inactif lorsque tous les rappels ont été renvoyés et qu'aucun autre rappel ne peut être déclenché à l'avenir. En pratique, cela signifie que la requête est inactive une fois que onSucceeded/onCanceled/onFailed a renvoyé une réponse et que tous les écouteurs de requête terminée ont renvoyé une réponse. Pour en savoir plus, consultez Cycle de vie des requêtes Cronet.

getDownstreamThroughputKbps

public int getDownstreamThroughputKbps()

Renvoie l'estimation du débit descendant (en kilobits par seconde) calculée par l'estimateur de qualité du réseau. Définissez sur CONNECTION_METRIC_UNKNOWN si la valeur n'est pas disponible. Cette méthode doit être appelée après enableNetworkQualityEstimator, sinon une exception sera générée.

Renvoie
int

Estimation du débit descendant en kilobits par seconde.

getEffectiveConnectionType

public int getEffectiveConnectionType()

Renvoie une estimation du type de connexion effectif calculé par l'estimateur de qualité du réseau. Appelez enableNetworkQualityEstimator pour commencer à calculer cette valeur.

Renvoie
int

le type de connexion estimé. La valeur renvoyée est l'une des valeurs EFFECTIVE_CONNECTION_TYPE_* .

getGlobalMetricsDeltas

public abstract byte[] getGlobalMetricsDeltas()

getHttpRttMs

public int getHttpRttMs()

Renvoie l'estimation du temps d'aller-retour HTTP (en millisecondes) calculée par l'estimateur de qualité du réseau. Définissez sur CONNECTION_METRIC_UNKNOWN si la valeur n'est pas disponible. Cette méthode doit être appelée après enableNetworkQualityEstimator, sinon une exception sera générée.

Renvoie
int

Estimation du temps de transmission aller-retour HTTP en millisecondes.

getTransportRttMs

public int getTransportRttMs()

Renvoie l'estimation du RTT de transport (en millisecondes) calculée par l'estimateur de qualité du réseau. Définissez sur CONNECTION_METRIC_UNKNOWN si la valeur n'est pas disponible. Cette méthode doit être appelée après enableNetworkQualityEstimator, sinon une exception sera générée.

Renvoie
int

Estimation du RTT de transport en millisecondes.

getVersionString

public abstract String getVersionString()
Renvoie
String

Chaîne de version du moteur lisible par l'utilisateur.

newUrlRequestBuilder

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

Crée un compilateur pour UrlRequest. Tous les rappels pour les objets UrlRequest générés seront appelés sur les threads de executor. executor ne doit pas exécuter de tâches sur le thread appelant execute pour éviter de bloquer les opérations réseau et de provoquer des exceptions lors de l'arrêt.

Paramètres
String url

URL des requêtes générées.

UrlRequest.Callback callback

Objet de rappel appelé lors de différents événements.

Executor executor

Executor sur lequel tous les rappels seront appelés.

openConnection

public abstract URLConnection openConnection(URL url)

Établit une nouvelle connexion à la ressource spécifiée par URLurl.

Remarque : L'implémentation java.net.HttpURLConnection de Cronet est soumise à certaines limites. Pour en savoir plus, consultez createURLStreamHandlerFactory.

Paramètres
URL url

URL de la ressource à laquelle se connecter.

Renvoie
URLConnection

une instance java.net.HttpURLConnection implémentée par ce CronetEngine.

Génère
java.io.IOException

si une erreur se produit lors de l'ouverture de la connexion.

removeRequestFinishedListener

public void removeRequestFinishedListener(RequestFinishedInfo.Listener listener)

Supprime un écouteur de requête terminée.

Paramètres
RequestFinishedInfo.Listener listener

l'écouteur à supprimer.

removeRttListener

public void removeRttListener(NetworkQualityRttListener listener)

Supprime un écouteur des temps d'aller-retour s'il a été précédemment enregistré avec addRttListener. Cette méthode doit être appelée après l'ajout d'un NetworkQualityRttListener afin d'arrêter de recevoir des observations.

Paramètres
NetworkQualityRttListener listener

l'écouteur des délais aller-retour.

removeThroughputListener

public void removeThroughputListener(NetworkQualityThroughputListener listener)

Supprime un écouteur de débit. Cette méthode doit être appelée après l'ajout d'un NetworkQualityThroughputListener avec addThroughputListener afin d'arrêter de recevoir des observations.

Paramètres
NetworkQualityThroughputListener listener

l'écouteur du débit.

shutdown

public abstract void shutdown()

Arrête le CronetEngine s'il n'y a aucune requête active, sinon génère une exception.

Ne peut pas être appelé sur le thread réseau (le thread sur lequel Cronet appelle Executor, qui est différent du thread sur lequel Executor appelle les rappels). Peut bloquer jusqu'à ce que toutes les ressources de CronetEngine aient été nettoyées.

startNetLogToDisk

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

Démarre la journalisation NetLog dans un répertoire spécifié avec une taille limitée. Le NetLog contient les événements émis par tous les CronetEngines actifs. NetLog est utile pour le débogage. Une fois la journalisation arrêtée stopNetLog, les données sont écrites dans netlog.json dans dirPath. Si la journalisation est interrompue, vous pouvez assembler manuellement les fichiers trouvés dans le sous-répertoire .inprogress à l'aide de https://chromium.googlesource.com/chromium/src/+/main/net/tools/stitch_net_log_files.py. Vous pouvez consulter le journal dans un navigateur Chrome en accédant à chrome://net-internals/#import.

Paramètres
String dirPath

Répertoire dans lequel le fichier netlog.json sera créé. dirPath doit déjà exister. Aucun fichier NetLog ne doit exister dans le répertoire. Si la journalisation est active, cette méthode est ignorée.

boolean logAll

true pour inclure les événements de base, les cookies utilisateur, les identifiants et tous les octets transférés dans le journal. Cette option présente un risque pour la confidentialité, car elle expose les identifiants de l'utilisateur. Elle ne doit être utilisée qu'avec le consentement de l'utilisateur et dans les situations où le journal ne sera pas public. false pour n'inclure que les événements de base.

int maxSize

Espace disque total maximal en octets qui doit être utilisé par NetLog. L'utilisation réelle de l'espace disque peut légèrement dépasser cette limite.

startNetLogToFile

public abstract void startNetLogToFile(String fileName, boolean logAll)

Démarre la consignation NetLog dans un fichier. Le NetLog contient les événements émis par tous les CronetEngines actifs. NetLog est utile pour le débogage. Vous pouvez afficher le fichier dans un navigateur Chrome en accédant à chrome://net-internals/#import.

Paramètres
String fileName

le chemin d'accès complet au fichier. Il ne doit pas être vide. Si le fichier existe, il est tronqué avant le début de l'opération. Si la journalisation est active, cette méthode est ignorée.

boolean logAll

true pour inclure les événements de base, les cookies utilisateur, les identifiants et tous les octets transférés dans le journal. Cette option présente un risque pour la confidentialité, car elle expose les identifiants de l'utilisateur. Elle ne doit être utilisée qu'avec le consentement de l'utilisateur et dans les situations où le journal ne sera pas public. false pour n'inclure que les événements de base.

stopNetLog

public abstract void stopNetLog()

Arrête la journalisation NetLog et vide le fichier sur le disque. Si aucune session de journalisation n'est en cours, cet appel est ignoré.