Android 截击超时无法正常工作

标签 android android-volley

我正在使用 android volley,当我发出请求时出现超时错误。我使用

增加了超时
request.setRetryPolicy(new DefaultRetryPolicy(
                5000, 
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

此实现的问题是我得到的结果是 request.finish: 7123ms。我应该采取超时错误。我对 android 超时有什么不了解的吗?如何将超时精确设置为 5000 毫秒?

编辑: 我在 prasadthangavel.blogspot 找到在每次重试中,请求都会增加其时间。我认为这应该是我的问题,但是 如果我将请求编辑为

request.setRetryPolicy(new DefaultRetryPolicy(
                5000, 0,0));  

根据android volley默认重试策略

@Override
    public void retry(VolleyError error) throws VolleyError {
        mCurrentRetryCount++;
        mCurrentTimeoutMs += (mCurrentTimeoutMs * mBackoffMultiplier);
        if (!hasAttemptRemaining()) {
            throw error;
        }
    }
    /**
     * Returns true if this policy has attempts remaining, false otherwise.
     */
    protected boolean hasAttemptRemaining() {
        return mCurrentRetryCount <= mMaxNumRetries;
    }`

不会进行其他重试。但这也没有解决我的问题。我有一些正在使用 request.finish 7200ms 执行的请求。为什么每次连接时间或读取时间大于 5000 毫秒时都不会抛出异常?

最佳答案

检查你的代码

request.setRetryPolicy(new DefaultRetryPolicy(
            5000, 
            DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

你设置超时为5000ms,重试次数设置为DefaultRetryPolicy.DEFAULT_MAX_RETRIES,其值为1,意思是。第一次请求的请求超时为 5 秒,重试请求为 5 秒。在您的情况下,两次请求后意味着 10 秒。会发生请求超时。

关于Android 截击超时无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26214709/

相关文章:

android - Google 登录 - 尝试访问用户信息时出现 401 错误 "Login Required"

android - 一种等待传感器数据的方法

android - Android JNI 中的 C++11 随机库

android - com.android.volley.NoConnectionError - 带有 Charles Proxy 的 Android 模拟器

java - 使用 volley 从 php 页面发送和接收

xml布局中的android View url

android - Volley 图像请求的意外响应代码 302

PHP 代码返回错误代码 500。出了什么问题?

java - 如何在 Kotlin 中解析 Volley 中来自服务器的错误

android - 当应用程序附带数据库以发布新版本时更新 SQLite 数据库