出现这种异常通常是因为网络问题导致请求失败。可以通过以下代码示例来解决:
implementation 'com.apollographql.apollo:apollo-runtime:x.x.x'
implementation 'com.apollographql.apollo:apollo-coroutines-support:x.x.x'
注意将x.x.x替换成你使用的版本号。
import com.apollographql.apollo.exception.ApolloNetworkException
...
try {
// 发起请求
} catch (e: ApolloNetworkException) {
// 处理异常
Log.e(TAG, "Apollo network error", e)
}
在try-catch块中包含你的Apollo请求代码。如果出现ApolloNetworkException,就会执行异常处理程序。在这里,代码将异常记录到日志中。
import kotlinx.coroutines.delay
import java.util.concurrent.TimeUnit
...
val maxTries = 3
var tries = 0
var successful = false
while (tries < maxTries && !successful) {
try {
// 发起请求
successful = true
} catch (e: ApolloNetworkException) {
// 处理异常
Log.e(TAG, "Apollo network error", e)
tries++
// 等待越来越长的时间(但不超过60秒)
val waitTime = Math.min(TimeUnit.SECONDS.toMillis(2.toDouble().pow(tries.toDouble()).toLong()), TimeUnit.MINUTES.toMillis(1))
delay(waitTime)
}
}
这里,代码将最大尝试数设置为3,并在请求失败时几次重试。每个重试等待的时间比上一个重试时间长一点。这是通过幂函数(指数回调)实现的
下一篇:安卓上传图片到服务器