在 Android 上使用 okhttp eventListener 测量下载时间时出现意外行为
Unexpected behavior while measuring download time using okhttp eventListener on Android
这个问题是https://github.com/square/okhttp/issues/6991
的延续
希望大家都好。我正在使用 okhttp
版本 4.3.1
。我正在尝试测量文件的下载时间。为此,我使用了以下代码:
val okHttpClientBuilder = OkHttpClient.Builder()
.connectTimeout(5, TimeUnit.MINUTES) // connect timeout
.writeTimeout(5, TimeUnit.MINUTES) // write timeout
.readTimeout(5, TimeUnit.MINUTES)
.eventListener(object : EventListener() {
override fun callStart(call: Call) {
val callTimeEnd = System.currentTimeMillis()
Log.v(TAG, "callTimeEnd: $callTimeEnd")
}
override fun callEnd(call: Call) {
val callTimeStart = System.currentTimeMillis()
Log.v(TAG, "callTimeEnd: $callTimeEnd")
}
})
它记录了以下时间戳:
呼叫开始: 1641622023750
通话结束:1641622031159
和 callEnd
- callStart
= ~7.4seconds
。我的设备 (Android 9.0) 的下载速度为 5 Mega bits per second
。文件大小为 25 Mega Bytes
。理想情况下,下载时间应为 ~40 seconds
。我是不是遗漏了什么,或者图书馆在幕后做了什么?
此外,另一台下载速度为 20 Mega bits per second
的设备 (Android 8.0
) 正在 ~ 10 seconds
下载相同的文件,即比 Android 9.0
设备花费的时间更长。任何指针将不胜感激。
问题出在设备所连接的网络上。我在 WAN
端口上应用了速率限制,但服务器通过 ethernet
连接到路由器,客户端通过 Wifi
连接,因此,文件使用 local network
在高带宽上运行,即路由器在 150 Mbps
上运行,慢速移动设备是 65 Mbps
,而快速是 144 Mbps
,结果是下载速度慢和速度快的时间分别是 ~5 seconds
和 ~3 seconds
。我将服务器移至 WAN
端口,它提供了所需的结果,即,将慢速设备 rate limit
设置为 5 Mbps
,并在 ~43 seconds
中下载了 25 Mega bytes
文件。
这个问题是https://github.com/square/okhttp/issues/6991
的延续希望大家都好。我正在使用 okhttp
版本 4.3.1
。我正在尝试测量文件的下载时间。为此,我使用了以下代码:
val okHttpClientBuilder = OkHttpClient.Builder()
.connectTimeout(5, TimeUnit.MINUTES) // connect timeout
.writeTimeout(5, TimeUnit.MINUTES) // write timeout
.readTimeout(5, TimeUnit.MINUTES)
.eventListener(object : EventListener() {
override fun callStart(call: Call) {
val callTimeEnd = System.currentTimeMillis()
Log.v(TAG, "callTimeEnd: $callTimeEnd")
}
override fun callEnd(call: Call) {
val callTimeStart = System.currentTimeMillis()
Log.v(TAG, "callTimeEnd: $callTimeEnd")
}
})
它记录了以下时间戳:
呼叫开始: 1641622023750
通话结束:1641622031159
和 callEnd
- callStart
= ~7.4seconds
。我的设备 (Android 9.0) 的下载速度为 5 Mega bits per second
。文件大小为 25 Mega Bytes
。理想情况下,下载时间应为 ~40 seconds
。我是不是遗漏了什么,或者图书馆在幕后做了什么?
此外,另一台下载速度为 20 Mega bits per second
的设备 (Android 8.0
) 正在 ~ 10 seconds
下载相同的文件,即比 Android 9.0
设备花费的时间更长。任何指针将不胜感激。
问题出在设备所连接的网络上。我在 WAN
端口上应用了速率限制,但服务器通过 ethernet
连接到路由器,客户端通过 Wifi
连接,因此,文件使用 local network
在高带宽上运行,即路由器在 150 Mbps
上运行,慢速移动设备是 65 Mbps
,而快速是 144 Mbps
,结果是下载速度慢和速度快的时间分别是 ~5 seconds
和 ~3 seconds
。我将服务器移至 WAN
端口,它提供了所需的结果,即,将慢速设备 rate limit
设置为 5 Mbps
,并在 ~43 seconds
中下载了 25 Mega bytes
文件。