CronetEngine

abstract class CronetEngine

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

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


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

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

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

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

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

Константы

const Int

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

const Int

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

const Int

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

const Int

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

const Int

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

const Int

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

const Int

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

const Int

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

const Long

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

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

Общественные функции

Unit

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

Unit

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

Unit

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

Unit
bindToNetwork (networkHandle: Long )

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

Unit
configureNetworkQualityEstimatorForTesting (
useLocalHostRequests: Boolean ,
useSmallerResponses: Boolean ,
disableOfflineCheck: Boolean
)

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

abstract URLStreamHandlerFactory !

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

Int

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

Int

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

Int

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

abstract ByteArray < Byte >!

Эта функция устарела.

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

Int

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

Int

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

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

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

abstract URLConnection !

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

Unit

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

Unit

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

Unit

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

abstract Unit

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

Unit
startNetLogToDisk (dirPath: String !, logAll: Boolean , maxSize: Int )

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

abstract Unit
startNetLogToFile (fileName: String !, logAll: Boolean )

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

abstract Unit

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

Константы

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

const val ACTIVE_REQUEST_COUNT_UNKNOWN = -1: Int

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

CONNECTION_METRIC_UNKNOWN

const val CONNECTION_METRIC_UNKNOWN = -1: Int

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

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

const val EFFECTIVE_CONNECTION_TYPE_2G = 3: Int

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

См. также
getEffectiveConnectionType

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

const val EFFECTIVE_CONNECTION_TYPE_3G = 4: Int

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

См. также
getEffectiveConnectionType

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

const val EFFECTIVE_CONNECTION_TYPE_4G = 5: Int

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

См. также
getEffectiveConnectionType

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

const val EFFECTIVE_CONNECTION_TYPE_OFFLINE = 1: Int

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

См. также
getEffectiveConnectionType

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

const val EFFECTIVE_CONNECTION_TYPE_SLOW_2G = 2: Int

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

См. также
getEffectiveConnectionType

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

const val EFFECTIVE_CONNECTION_TYPE_UNKNOWN = 0: Int

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

См. также
getEffectiveConnectionType

UNBIND_NETWORK_HANDLE

const val UNBIND_NETWORK_HANDLE = -1: Long

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

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

CronetEngine

CronetEngine()

Общественные функции

addRequestFinishedListener

fun addRequestFinishedListener(listener: RequestFinishedInfo.Listener!): Unit

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

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

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

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

addRttListener

fun addRttListener(listener: NetworkQualityRttListener!): Unit

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

Параметры
listener: NetworkQualityRttListener !

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

addThroughputListener

fun addThroughputListener(listener: NetworkQualityThroughputListener!): Unit

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

Параметры
listener: NetworkQualityThroughputListener !

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

bindToNetwork

fun bindToNetwork(networkHandle: Long): Unit

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

Параметры
networkHandle: Long

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

configureNetworkQualityEtimatorForTesting

fun configureNetworkQualityEstimatorForTesting(
    useLocalHostRequests: Boolean,
    useSmallerResponses: Boolean,
    disableOfflineCheck: Boolean
): Unit

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

Параметры
useLocalHostRequests: Boolean

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

useSmallerResponses: Boolean

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

disableOfflineCheck: Boolean

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

createURLStreamHandlerFactory

abstract fun createURLStreamHandlerFactory(): URLStreamHandlerFactory!

Создает объект 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

fun getActiveRequestCount(): Int

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

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

getDownstreamThroughputKbps

fun getDownstreamThroughputKbps(): Int

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

Возвраты
Int

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

getEffectiveConnectionType

fun getEffectiveConnectionType(): Int

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

Возвраты
Int

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

getGlobalMetricsDeltas

abstract fun getGlobalMetricsDeltas(): ByteArray<Byte>!

getHttpRttMs

fun getHttpRttMs(): Int

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

Возвраты
Int

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

getTransportRttMs

fun getTransportRttMs(): Int

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

Возвраты
Int

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

getVersionString

abstract fun getVersionString(): String!
Возвраты
String !

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

newUrlRequestBuilder

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

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

Параметры
url: String !

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

callback: UrlRequest.Callback !

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

executor: Executor !

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

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

abstract fun openConnection(url: URL!): URLConnection!

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

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

Параметры
url: URL !

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

Возвраты
URLConnection !

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

Броски
java.io.IOException

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

removeRequestFinishedListener

fun removeRequestFinishedListener(listener: RequestFinishedInfo.Listener!): Unit

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

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

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

removeRttListener

fun removeRttListener(listener: NetworkQualityRttListener!): Unit

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

Параметры
listener: NetworkQualityRttListener !

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

removeThroughputListener

fun removeThroughputListener(listener: NetworkQualityThroughputListener!): Unit

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

Параметры
listener: NetworkQualityThroughputListener !

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

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

abstract fun shutdown(): Unit

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

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

startNetLogToDisk

fun startNetLogToDisk(dirPath: String!, logAll: Boolean, maxSize: Int): Unit

Запускает запись логов 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.

Параметры
dirPath: String !

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

logAll: Boolean

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

maxSize: Int

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

startNetLogToFile

abstract fun startNetLogToFile(fileName: String!, logAll: Boolean): Unit

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

Параметры
fileName: String !

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

logAll: Boolean

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

stopNetLog

abstract fun stopNetLog(): Unit

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