JavaCronetEngine

class JavaCronetEngine : CronetEngineBase


java.net.HttpURLConnection 支持的 CronetEngine。

不支持网络日志、传输数据测量、双向流、缓存或优先级。

摘要

公共构造函数

公共函数

Unit

注册一个监听器,该监听器会在每个请求结束后被调用,并提供请求信息。

Unit

注册一个监听器,每当网络质量估算器检测到样本往返时间时,该监听器就会被调用。

Unit

注册一个监听器,每当网络质量估算器检测到吞吐量测量样本时,该监听器都会被调用。

Unit
bindToNetwork(networkHandle: Long)

将引擎绑定到指定的网络句柄。

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

配置网络质量估算器以进行测试。

ExperimentalUrlRequest!
createRequest(
    url: String!,
    callback: UrlRequest.Callback!,
    executor: Executor!,
    priority: Int,
    connectionAnnotations: (Mutable)Collection<Any!>!,
    disableCache: Boolean,
    disableConnectionMigration: Boolean,
    allowDirectExecutor: Boolean,
    trafficStatsTagSet: Boolean,
    trafficStatsTag: Int,
    trafficStatsUidSet: Boolean,
    trafficStatsUid: Int,
    requestFinishedListener: RequestFinishedInfo.Listener!,
    idempotency: Int,
    networkHandle: Long,
    method: String!,
    requestHeaders: ArrayList<(Mutable)Map.Entry<String!, String!>!>!,
    uploadDataProvider: UploadDataProvider!,
    uploadDataProviderExecutor: Executor!,
    sharedDictionaryHash: ByteArray!,
    sharedDictionary: ByteBuffer!,
    sharedDictionaryId: String
)
URLStreamHandlerFactory!

创建 URLStreamHandlerFactory 以处理 HTTP 和 HTTPS 流量。

Int

返回有效请求的数量。

Int

返回由网络质量估算器计算的下行吞吐量估计值(以千比特/秒为单位)。

Int

返回由网络质量估算器计算出的有效连接类型估计值。

ByteArray<Byte>!

此函数已弃用。

在 Cronet 的新版本中,此方法将始终返回一个空数组。

Int

返回由网络质量估算器计算出的 HTTP RTT 估计值(以毫秒为单位)。

Int

返回由网络质量估算器计算出的传输 RTT 估计值(以毫秒为单位)。

String!
URLConnection!

URLurl 指定的资源建立新连接。

URLConnection!
openConnection(url: URL!, proxy: Proxy!)

使用给定的代理与 URLurl 指定的资源建立新连接。

Unit

移除已完成的请求监听器。

Unit

移除往返时间监听器(如果之前已通过 addRttListener 注册)。

Unit

移除吞吐量监听器。

Unit

如果没有有效请求,则关闭 CronetEngine;否则抛出异常。

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

开始将 NetLog 记录到指定目录,并限制大小。

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

开始将 NetLog 记录到文件。

Unit

停止 NetLog 日志记录并将文件刷新到磁盘。

受保护的函数

ExperimentalBidirectionalStream!
createBidirectionalStream(
    url: String!,
    callback: BidirectionalStream.Callback!,
    executor: Executor!,
    httpMethod: String!,
    requestHeaders: (Mutable)List<(Mutable)Map.Entry<String!, String!>!>!,
    @CronetEngineBase.StreamPriority priority: Int,
    delayRequestHeadersUntilFirstFlush: Boolean,
    connectionAnnotations: (Mutable)Collection<Any!>!,
    trafficStatsTagSet: Boolean,
    trafficStatsTag: Int,
    trafficStatsUidSet: Boolean,
    trafficStatsUid: Int,
    networkHandle: Long
)

继承的常量

来自 org.chromium.net.CronetEngine
const Int

有效请求数量的值未知

来自 org.chromium.net.impl.CronetEngineBase

继承的函数

来自 org.chromium.net.impl.CronetEngineBase
ExperimentalUrlRequest.Builder!
newUrlRequestBuilder(
    url: String!,
    callback: UrlRequest.Callback!,
    executor: Executor!
)

UrlRequest 创建构建器。

公共构造函数

JavaCronetEngine

JavaCronetEngine(builder: CronetEngineBuilderImpl!)

公共函数

addRequestFinishedListener

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

注册一个监听器,该监听器会在每个请求结束后被调用,并提供请求信息。

监听器是在监听器提供的 java.util.concurrent.Executor 上调用的。

参数
listener: RequestFinishedInfo.Listener!

用于监听已完成请求的监听器。

addRttListener

fun addRttListener(listener: NetworkQualityRttListener!): Unit

注册一个监听器,每当网络质量估算器检测到样本往返时间时,该监听器就会被调用。必须在 enableNetworkQualityEstimator 之后调用,否则会抛出异常。往返时间可能会在网络堆栈的各个层(包括 TCP、QUIC 和网址请求层)记录。监听器是在传递给 enableNetworkQualityEstimatorjava.util.concurrent.Executor 上调用的。

参数
listener: NetworkQualityRttListener!

往返时间监听器。

addThroughputListener

fun addThroughputListener(listener: NetworkQualityThroughputListener!): Unit

注册一个监听器,每当网络质量估算器检测到吞吐量测量样本时,该监听器都会被调用。必须在 enableNetworkQualityEstimator 之后调用此方法。吞吐量观测结果是通过在至少收到一个网址响应时测量活动网络接口上读取的字节数来计算的。监听器是在传递给 enableNetworkQualityEstimatorjava.util.concurrent.Executor 上调用的。

参数
listener: NetworkQualityThroughputListener!

吞吐量的监听器。

bindToNetwork

fun bindToNetwork(networkHandle: Long): Unit

将引擎绑定到指定的网络句柄。通过此引擎创建的所有请求都将使用与此句柄关联的网络。如果此网络断开连接,所有请求都会失败,具体错误取决于网络断开连接时请求处理的阶段。可以通过 Network#getNetworkHandle 获取网络句柄。仅从 Android Marshmallow 开始提供。

参数
networkHandle: Long

要将引擎绑定到的网络句柄。指定 UNBIND_NETWORK_HANDLE 可取消绑定。

configureNetworkQualityEstimatorForTesting

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

配置网络质量估算器以进行测试。必须在添加往返时间和吞吐量监听器之前调用此方法,并且在启用网络质量估算器之后调用此方法。

参数
useLocalHostRequests: Boolean

在估算中包含对 localhost 的请求。

useSmallerResponses: Boolean

在吞吐量估算中包含小规模响应。

disableOfflineCheck: Boolean

如果设置为 true,则在计算有效连接类型或写入偏好设置时,停用设备离线检查。

createRequest

fun createRequest(
    url: String!,
    callback: UrlRequest.Callback!,
    executor: Executor!,
    priority: Int,
    connectionAnnotations: (Mutable)Collection<Any!>!,
    disableCache: Boolean,
    disableConnectionMigration: Boolean,
    allowDirectExecutor: Boolean,
    trafficStatsTagSet: Boolean,
    trafficStatsTag: Int,
    trafficStatsUidSet: Boolean,
    trafficStatsUid: Int,
    requestFinishedListener: RequestFinishedInfo.Listener!,
    idempotency: Int,
    networkHandle: Long,
    method: String!,
    requestHeaders: ArrayList<(Mutable)Map.Entry<String!, String!>!>!,
    uploadDataProvider: UploadDataProvider!,
    uploadDataProviderExecutor: Executor!,
    sharedDictionaryHash: ByteArray!,
    sharedDictionary: ByteBuffer!,
    sharedDictionaryId: String
): ExperimentalUrlRequest!

create网址StreamHandlerFactory

fun createURLStreamHandlerFactory(): URLStreamHandlerFactory!

创建 URLStreamHandlerFactory 以处理 HTTP 和 HTTPS 流量。可以通过 setURLStreamHandlerFactory 安装此类的实例,从而默认将此 CronetEngine 用于通过 openConnection 创建的所有请求。

Cronet 不会使用通过系统提供的某些 HTTP 功能:

虽然 Cronet 支持并鼓励使用 HTTPS 协议发送请求,但 Cronet 不支持 HttpsURLConnection API。不支持还包括不使用系统提供的某些 HTTPS 功能:

返回
URLStreamHandlerFactory!

由相应 CronetEngine 实现的 URLStreamHandlerFactory 实例。

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

fun getGlobalMetricsDeltas(): ByteArray<Byte>!

getHttpRttMs

fun getHttpRttMs(): Int

返回由网络质量估算器计算出的 HTTP RTT 估计值(以毫秒为单位)。如果值不可用,则设置为 CONNECTION_METRIC_UNKNOWN。必须在 enableNetworkQualityEstimator 之后调用此方法,否则会抛出异常。

返回
Int

HTTP RTT 的估计值(以毫秒为单位)。

getTransportRttMs

fun getTransportRttMs(): Int

返回由网络质量估算器计算出的传输 RTT 估计值(以毫秒为单位)。如果值不可用,则设置为 CONNECTION_METRIC_UNKNOWN。必须在 enableNetworkQualityEstimator 之后调用此方法,否则会抛出异常。

返回
Int

以毫秒为单位的传输 RTT 估计值。

getVersionString

fun getVersionString(): String!
返回
String!

引擎的人类可读版本字符串。

openConnection

fun openConnection(url: URL!): URLConnection!

URLurl 指定的资源建立新连接。

注意:Cronet 的 java.net.HttpURLConnection 实现存在某些限制,详情请参阅 createURLStreamHandlerFactory

参数
url: URL!

要连接的资源的网址。

返回
URLConnection!

由相应 CronetEngine 实现的 java.net.HttpURLConnection 实例。

抛出
java.io.IOException

如果在打开连接时发生错误。

openConnection

fun openConnection(url: URL!, proxy: Proxy!): URLConnection!

使用给定的代理与 URLurl 指定的资源建立新连接。

注意:Cronet 的 java.net.HttpURLConnection 实现存在某些限制,详情请参阅 createURLStreamHandlerFactory

参数
url: URL!

要连接的资源的网址。

proxy: Proxy!

建立连接时要使用的代理。

返回
URLConnection!

由相应 CronetEngine 实现的 java.net.HttpURLConnection 实例。

抛出
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

移除吞吐量监听器。应在添加了包含 addThroughputListenerNetworkQualityThroughputListener 后调用此方法,以停止接收观测结果。

参数
listener: NetworkQualityThroughputListener!

吞吐量的监听器。

关停

fun shutdown(): Unit

如果没有有效请求,则关闭 CronetEngine;否则抛出异常。

无法在网络线程上调用 - Cronet 调用到执行器的线程(与执行器调用回调的线程不同)。可能会阻塞,直到所有 CronetEngine 的资源都已清理完毕。

startNetLogToDisk

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

开始将 NetLog 记录到指定目录,并限制大小。NetLog 将包含所有有效 CronetEngine 发出的事件。NetLog 可用于调试。日志记录停止 stopNetLog 后,数据将写入 dirPath 中的 netlog.json。如果日志记录中断,您可以使用以下网址手动拼接 .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

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

开始将 NetLog 记录到文件。NetLog 将包含所有有效 CronetEngine 发出的事件。NetLog 可用于调试。您可以使用 Chrome 浏览器前往 chrome://net-internals/#import 查看该文件

参数
fileName: String!

完整的文件路径。不得为空。如果文件存在,则在开始之前将其截断。如果正在主动记录日志,则忽略此方法。

logAll: Boolean

true 以在日志中包含基本事件、用户 Cookie、凭据和所有传输的字节。此选项存在隐私权风险,因为它会公开用户的凭据,因此仅应在征得用户同意的情况下使用,并且仅在日志不会公开的情况下使用。false 仅包含基本事件。

stopNetLog

fun stopNetLog(): Unit

停止 NetLog 日志记录并将文件刷新到磁盘。如果日志记录会话未在进行中,则忽略此调用。

受保护的函数

createBidirectionalStream

protected fun createBidirectionalStream(
    url: String!,
    callback: BidirectionalStream.Callback!,
    executor: Executor!,
    httpMethod: String!,
    requestHeaders: (Mutable)List<(Mutable)Map.Entry<String!, String!>!>!,
    @CronetEngineBase.StreamPriority priority: Int,
    delayRequestHeadersUntilFirstFlush: Boolean,
    connectionAnnotations: (Mutable)Collection<Any!>!,
    trafficStatsTagSet: Boolean,
    trafficStatsTag: Int,
    trafficStatsUidSet: Boolean,
    trafficStatsUid: Int,
    networkHandle: Long
): ExperimentalBidirectionalStream!