CronetEngine

public abstract class CronetEngine

Известные прямые подклассы CronetEngineBase
Известные косвенные подклассы JavaCronetEngine
JavaCronetEngine

java.net.HttpURLConnection поддерживает CronetEngine.


Механизм обработки UrlRequest , использующий наилучший доступный на текущей платформе стек HTTP. Экземпляр этого класса можно создать с помощью Builder .

Краткое содержание

Вложенные типы

public class CronetEngine.Builder

Конструктор для CronetEngine , позволяющий настраивать CronetEngine во время выполнения.

public abstract class CronetEngine.Builder.LibraryLoader

Класс, предоставляющий метод для загрузки нативной библиотеки Cronet.

Константы

static final int

Значение счетчика активных запросов неизвестно.

static final int

Значение метрики соединения неизвестно.

static final int

По оценкам, эффективный тип подключения — 2G.

static final int

По оценкам, эффективный тип подключения — 3G.

static final int

По оценкам, эффективный тип подключения — 4G.

static final int

Устройство отключено от сети.

static final int

Оценка эффективного типа соединения показывает медленный 2G.

static final int

Оценка эффективного типа соединения неизвестна.

static final long

Значение, которое будет использоваться для отмены любой предыдущей сетевой привязки.

Государственные строители

Общедоступные методы

void

Регистрирует обработчик событий, который вызывается после завершения каждого запроса с информацией о запросе.

void

Регистрирует слушатель, который вызывается всякий раз, когда оценщик качества сети фиксирует приблизительное время кругового пути.

void

Регистрирует слушатель, который вызывается всякий раз, когда оценщик качества сети фиксирует выборочное измерение пропускной способности.

void
bindToNetwork (long networkHandle)

Привязывает движок к указанному сетевому дескриптору.

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

Настраивает инструмент оценки качества сети для тестирования.

abstract URLStreamHandlerFactory

Создает URLStreamHandlerFactory для обработки HTTP и HTTPS-трафика.

int

Возвращает количество активных запросов.

int

Возвращает оценку пропускной способности нисходящего потока (в килобитах в секунду), вычисленную с помощью алгоритма оценки качества сети.

int

Возвращает оценку эффективного типа соединения, вычисленную с помощью оценщика качества сети.

abstract byte[]

Этот метод устарел.

В современных версиях Cronet эта функция всегда будет возвращать пустой массив.

int

Возвращает оценку времени кругового обхода HTTP (в миллисекундах), вычисленную с помощью алгоритма оценки качества сети.

int

Возвращает оценку времени кругового обхода (RTT) в миллисекундах, вычисленную оценщиком качества сети.

abstract String
abstract UrlRequest.Builder

Создает конструктор для UrlRequest .

abstract URLConnection

Устанавливает новое соединение с ресурсом, указанным в URL url .

void

Удаляет обработчик завершенного запроса.

void

Удаляет слушатель времени кругового пути, если он ранее был зарегистрирован с помощью addRttListener .

void

Удаляет слушателя, обрабатывающего данные о пропускной способности.

abstract void

При отсутствии активных запросов CronetEngine отключает его, в противном случае генерирует исключение.

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

Запускает запись логов NetLog в указанный каталог с ограниченным размером.

abstract void
startNetLogToFile ( String fileName, boolean logAll)

Запускает запись логов NetLog в файл.

abstract void

Останавливает запись в NetLog и записывает файл на диск.

Константы

КОЛИЧЕСТВО АКТИВНЫХ ЗАПРОСОВ НЕИЗВЕСТНО

public static final int ACTIVE_REQUEST_COUNT_UNKNOWN = -1

Значение счетчика активных запросов неизвестно.

CONNECTION_METRIC_UNKNOWN

public static final int CONNECTION_METRIC_UNKNOWN = -1

Значение метрики соединения неизвестно.

ДЕЙСТВИТЕЛЬНЫЙ ТИП СОЕДИНЕНИЯ_2G

public static final int EFFECTIVE_CONNECTION_TYPE_2G = 3

По оценкам, эффективный тип подключения — 2G.

См. также
getEffectiveConnectionType

ДЕЙСТВИТЕЛЬНЫЙ ТИП СОЕДИНЕНИЯ_3G

public static final int EFFECTIVE_CONNECTION_TYPE_3G = 4

По оценкам, эффективный тип подключения — 3G.

См. также
getEffectiveConnectionType

ДЕЙСТВИТЕЛЬНЫЙ ТИП СОЕДИНЕНИЯ_4G

public static final int EFFECTIVE_CONNECTION_TYPE_4G = 5

По оценкам, эффективный тип подключения — 4G.

См. также
getEffectiveConnectionType

ДЕЙСТВИТЕЛЬНЫЙ ТИП СОЕДИНЕНИЯ: ОФФЛАЙН

public static final int EFFECTIVE_CONNECTION_TYPE_OFFLINE = 1

Устройство отключено от сети.

См. также
getEffectiveConnectionType

ЭФФЕКТИВНЫЙ ТИП СОЕДИНЕНИЯ: МЕДЛЕННЫЙ 2G

public static final int EFFECTIVE_CONNECTION_TYPE_SLOW_2G = 2

Оценка эффективного типа соединения показывает медленный 2G.

См. также
getEffectiveConnectionType

ТИП ДЕЙСТВИТЕЛЬНОГО СОЕДИНЕНИЯ НЕИЗВЕСТЕН

public static final int EFFECTIVE_CONNECTION_TYPE_UNKNOWN = 0

Оценка эффективного типа соединения неизвестна.

См. также
getEffectiveConnectionType

UNBIND_NETWORK_HANDLE

public static final long UNBIND_NETWORK_HANDLE = -1

Значение, которое будет использоваться для отмены любой предыдущей сетевой привязки.

Государственные строители

CronetEngine

public CronetEngine()

Общедоступные методы

addRequestFinishedListener

public void addRequestFinishedListener(RequestFinishedInfo.Listener listener)

Регистрирует обработчик событий, который вызывается после завершения каждого запроса с информацией о запросе.

Слушатель вызывается для объекта java.util.concurrent.Executor , предоставленного слушателем.

Параметры
RequestFinishedInfo.Listener listener

слушатель завершенных запросов.

addRttListener

public void addRttListener(NetworkQualityRttListener listener)

Регистрирует обработчик событий, который вызывается всякий раз, когда оценщик качества сети фиксирует время кругового пути. Этот обработчик должен вызываться после enableNetworkQualityEstimator , в противном случае — генерировать исключение. Время кругового пути может записываться на различных уровнях сетевого стека, включая TCP, QUIC и уровень запроса URL. Обработчик событий вызывается для объекта java.util.concurrent.Executor , переданного в enableNetworkQualityEstimator .

Параметры
NetworkQualityRttListener listener

слушатель, получающий информацию о времени в пути туда и обратно.

addThroughputListener

public void addThroughputListener(NetworkQualityThroughputListener listener)

Регистрирует слушатель, который вызывается всякий раз, когда оценщик качества сети фиксирует выборочное измерение пропускной способности. Этот вызов должен быть выполнен после enableNetworkQualityEstimator . Наблюдения за пропускной способностью вычисляются путем измерения количества байтов, прочитанных через активный сетевой интерфейс в моменты, когда получен хотя бы один ответ на URL-адрес. Слушатель вызывается для объекта java.util.concurrent.Executor , переданного в enableNetworkQualityEstimator .

Параметры
NetworkQualityThroughputListener listener

слушатель пропускной способности.

bindToNetwork

public void bindToNetwork(long networkHandle)

Привязывает движок к указанному сетевому дескриптору. Все запросы, созданные через этот движок, будут использовать сеть, связанную с этим дескриптором. Если эта сеть отключается, все запросы завершатся с ошибкой; точная ошибка будет зависеть от стадии обработки запроса в момент отключения сети. Сетевые дескрипторы можно получить с помощью Network#getNetworkHandle . Доступно только начиная с Android Marshmallow.

Параметры
long networkHandle

Сетевой дескриптор, к которому будет привязан движок. Укажите UNBIND_NETWORK_HANDLE , чтобы отменить привязку.

configureNetworkQualityEtimatorForTesting

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

Настраивает средство оценки качества сети для тестирования. Этот вызов необходимо выполнить до добавления слушателей времени кругового пути и пропускной способности, а также после включения средства оценки качества сети.

Параметры
boolean useLocalHostRequests

Включать запросы к localhost в оценки.

boolean useSmallerResponses

Учитывайте небольшие отклики при оценке пропускной способности.

boolean disableOfflineCheck

Если установлено значение true, проверка устройства на автономное состояние отключается при вычислении фактического типа подключения или при записи настроек.

createURLStreamHandlerFactory

public abstract URLStreamHandlerFactory createURLStreamHandlerFactory()

Создает объект URLStreamHandlerFactory для обработки HTTP и HTTPS-трафика. Экземпляр этого класса можно установить с помощью setURLStreamHandlerFactory таким образом, по умолчанию для всех запросов, создаваемых через openConnection, будет использоваться этот CronetEngine.

Cronet не использует некоторые функции HTTP, предоставляемые системой:

  • HTTP-кэш устанавливается с помощью HttpResponseCache.install()
  • метод HTTP-аутентификации, установленный с помощью setDefault
  • хранилище HTTP-cookie, установленное с помощью setDefault

Хотя Cronet поддерживает и поощряет запросы с использованием протокола HTTPS, Cronet не предоставляет поддержку API HttpsURLConnection . Отсутствие поддержки также включает в себя невозможность использования некоторых функций HTTPS, предоставляемых системой:

Возвраты
URLStreamHandlerFactory

Экземпляр URLStreamHandlerFactory , реализованный в этом CronetEngine.

getActiveRequestCount

public int getActiveRequestCount()

Возвращает количество активных запросов.

Запрос становится "активным" в методе UrlRequest.start(), если этот метод не вызывает исключение. Он становится неактивным, когда все коллбэки возвращают управление и в будущем невозможно запустить дополнительные коллбэки. На практике это означает, что запрос становится неактивным после того, как метод onSucceeded/onCanceled/onFailed вернет управление и все обработчики завершения запроса вернут управление. Для получения дополнительной информации см. жизненный цикл запросов Cronet .

getDownstreamThroughputKbps

public int getDownstreamThroughputKbps()

Возвращает оценку пропускной способности нисходящего потока (в килобитах в секунду), вычисленную оценщиком качества сети. Если значение недоступно, установите значение CONNECTION_METRIC_UNKNOWN . Этот метод необходимо вызывать после enableNetworkQualityEstimator , в противном случае будет сгенерировано исключение.

Возвраты
int

Оценка пропускной способности нижестоящего узла в килобитах в секунду.

getEffectiveConnectionType

public int getEffectiveConnectionType()

Возвращает оценку эффективного типа соединения, вычисленную с помощью оценщика качества сети. Вызовите enableNetworkQualityEstimator , чтобы начать вычисление этого значения.

Возвраты
int

Предполагаемый тип соединения. Возвращаемое значение — одно из EFFECTIVE_CONNECTION_TYPE_* .

getGlobalMetricsDeltas

public abstract byte[] getGlobalMetricsDeltas()

getHttpRttMs

public int getHttpRttMs()

Возвращает оценку времени кругового обхода HTTP (в миллисекундах), вычисленную оценщиком качества сети. Если значение недоступно, установите значение CONNECTION_METRIC_UNKNOWN . Этот метод необходимо вызывать после enableNetworkQualityEstimator , в противном случае будет сгенерировано исключение.

Возвраты
int

Оценка времени кругового обхода HTTP-трафика в миллисекундах.

getTransportRttMs

public int getTransportRttMs()

Возвращает оценку времени кругового обхода (в миллисекундах), вычисленную оценщиком качества сети. Если значение недоступно, установите значение CONNECTION_METRIC_UNKNOWN . Этот метод необходимо вызывать после enableNetworkQualityEstimator , в противном случае будет сгенерировано исключение.

Возвраты
int

Оценка времени кругового пути (RTT) в миллисекундах.

getVersionString

public abstract String getVersionString()
Возвраты
String

Строка с указанием версии движка, удобочитаемая для человека.

newUrlRequestBuilder

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

Создаёт конструктор для UrlRequest . Все обратные вызовы для сгенерированных объектов UrlRequest будут вызываться в потоках executor . executor не должен запускать задачи в потоке, вызывающем execute чтобы предотвратить блокировку сетевых операций и возникновение исключений во время завершения работы.

Параметры
String url

URL-адреса для сгенерированных запросов.

UrlRequest.Callback callback

Объект обратного вызова, который вызывается при различных событиях.

Executor executor

Executor на котором будут вызываться все функции обратного вызова.

открытое соединение

public abstract URLConnection openConnection(URL url)

Устанавливает новое соединение с ресурсом, указанным в URL url .

Примечание: реализация java.net.HttpURLConnection в Cronet имеет определенные ограничения, подробности см. createURLStreamHandlerFactory .

Параметры
URL url

URL ресурса для подключения.

Возвраты
URLConnection

Экземпляр java.net.HttpURLConnection , реализованный в этом CronetEngine.

Броски
java.io.IOException

если при установлении соединения возникает ошибка.

removeRequestFinishedListener

public void removeRequestFinishedListener(RequestFinishedInfo.Listener listener)

Удаляет обработчик завершенного запроса.

Параметры
RequestFinishedInfo.Listener listener

слушатель, которого нужно удалить.

removeRttListener

public void removeRttListener(NetworkQualityRttListener listener)

Удаляет слушатель времени кругового пути, если он ранее был зарегистрирован с помощью addRttListener . Этот метод следует вызывать после добавления NetworkQualityRttListener , чтобы прекратить получение наблюдений.

Параметры
NetworkQualityRttListener listener

слушатель, получающий информацию о времени в пути туда и обратно.

removeThroughputListener

public void removeThroughputListener(NetworkQualityThroughputListener listener)

Удаляет слушатель пропускной способности. Этот метод следует вызывать после добавления NetworkQualityThroughputListener с помощью addThroughputListener , чтобы прекратить получение наблюдений.

Параметры
NetworkQualityThroughputListener listener

слушатель пропускной способности.

неисправность

public abstract void shutdown()

При отсутствии активных запросов CronetEngine отключает его, в противном случае генерирует исключение.

Вызов невозможен в сетевом потоке — в потоке, в котором Cronet вызывает Executor (который отличается от потока, в котором Executor вызывает обратные вызовы). Может блокировать выполнение до тех пор, пока не будут очищены все ресурсы CronetEngine .

startNetLogToDisk

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

Запускает запись логов NetLog в указанный каталог с ограниченным размером. NetLog будет содержать события, генерируемые всеми работающими CronetEngines. NetLog полезен для отладки. После остановки записи логов stopNetLog данные будут записаны в файл netlog.json в dirPath . Если запись логов прервана, вы можете вручную объединить файлы, находящиеся в подкаталоге .inprogress, используя: https://chromium.googlesource.com/chromium/src/+/main/net/tools/stitch_net_log_files.py. Журнал можно просмотреть в браузере Chrome, перейдя по адресу chrome://net-internals/#import.

Параметры
String dirPath

Каталог, в котором будет создан файл netlog.json. Параметр dirPath должен уже существовать. Файлы NetLog не должны существовать в этом каталоге. Если ведется активное логирование, этот параметр игнорируется.

boolean logAll

true означает включение в журнал основных событий, пользовательских файлов cookie, учетных данных и всех переданных байтов. Этот параметр представляет собой риск для конфиденциальности, поскольку раскрывает учетные данные пользователя, и должен использоваться только с согласия пользователя и в ситуациях, когда журнал не будет общедоступным. Значение false означает включение только основных событий.

int maxSize

Максимальный общий объем дискового пространства в байтах, который должен использоваться NetLog. Фактическое использование дискового пространства может незначительно превышать этот лимит.

startNetLogToFile

public abstract void startNetLogToFile(String fileName, boolean logAll)

Запускает запись логов NetLog в файл. Файл NetLog будет содержать события, генерируемые всеми работающими устройствами CronetEngines. Файл NetLog полезен для отладки. Файл можно просмотреть в браузере Chrome, перейдя по адресу chrome://net-internals/#import

Параметры
String fileName

Полный путь к файлу. Он не должен быть пустым. Если файл существует, он будет усечен перед началом работы. Если ведется активное логирование, этот метод игнорируется.

boolean logAll

true означает включение в журнал основных событий, пользовательских файлов cookie, учетных данных и всех переданных байтов. Этот параметр представляет собой риск для конфиденциальности, поскольку раскрывает учетные данные пользователя, и должен использоваться только с согласия пользователя и в ситуациях, когда журнал не будет общедоступным. Значение false означает включение только основных событий.

stopNetLog

public abstract void stopNetLog()

Останавливает запись в NetLog и записывает файл на диск. Если сеанс записи не запущен, этот вызов игнорируется.