【问题标题】:Android Volley request queue does not run all requestsAndroid Volley 请求队列不运行所有请求
【发布时间】:2014-11-25 15:10:37
【问题描述】:

在某些设备上,我的 Volley 请求队列不会运行我添加到队列中的所有网络请求。我尝试了两种方法,方法一种:

1) 一种递归方法,在上一个请求的onResponse 方法中调用后续网络请求。

启动此递归的服务在完成之前被系统杀死,但在某些设备上 Volley 请求队列仍然可以完成此方法。在其他设备上,仅发出一个网络请求,后续的则不会。

2) 一个 for 循环,其中所有请求对象在其中任何一个进行网络调用之前都被添加到请求队列中。

在某些设备上,请求队列的行为仍然像我想要的那样,在其他设备上它是命中或未命中。

我使用单例来维护我的请求队列,所以这应该与 IntentService 被系统销毁无关

见识见识

【问题讨论】:

    标签: android android-volley intentservice


    【解决方案1】:

    如果您使用IntentService,它会在handleIntent 方法返回时立即被销毁。如果此时没有任何活动在运行,您的应用程序将终止,并且您的单例会消失。

    使用 volley,您不需要 IntentService,因为 Volley 会为您处理异步。

    使用带有START_STICKY 作为回报的标准服务,完成请求后不要忘记stopSelf

    【讨论】:

    • 嗯,实际上问题还在发生。我的 Volley 线程在 onStartCommend 返回之前开始,在它返回之后它有时可能会杀死单例。但这也是活动仍在进行的情况。
    • 这很奇怪。需要多长时间?
    • 嗯,它实际上是一个分段上传,字节分成 14 - 40 个部分。我知道 Google 关于 Volley 处理“大型”有效负载的说法,但这是一个经过高度修改的 volley 来处理分段上传。但本质上,字节块被添加到单个请求(MultipartRequest 类型)中,并且这些请求像普通请求一样被添加到请求队列中。 Volley 上传它们并且服务器喜欢它,但在某些设备上,有时,requestQueue 单例被杀死或其他东西。其他设备只是直接通过整个上传队列。
    猜你喜欢
    • 2016-09-19
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多