【问题标题】:Volley - more than one request in the same Activity androidVolley - 同一个Activity android中的多个请求
【发布时间】:2015-02-10 13:47:57
【问题描述】:

我想使用 Volley 库在一个 Activity 中发送两个不同的请求并处理两个不同的响应。 我的活动实现了 onResponseListener,所以我只有一个 onResponse 方法,并且两个响应都在这里处理。因为它们的结构完全一样,所以我不知道哪个是哪个。

我怎样才能知道我从哪个请求收到了响应,以便我可以以不同的方式处理它们?有没有办法“标记”请求或类似的东西?

我可以设置某种检查变量,例如boolean firstRequestIsSent 当我发送请求时,然后在 onResponse 方法中检查它,但它是一个非常丑陋的解决方案。

非常感谢

【问题讨论】:

  • 只需在请求类的构造函数中实例化回调,或者您可以在 volley 周围编写一个包装器 :) 但仅供参考,有一些其他 api 库以您想要的集中方式工作。您必须为通话添加 ID 和 ID .. 谷歌可能会考虑这一点,并且凌空不是那样的原因是有原因的(对不起,英语不好,不是我的母语)

标签: android android-activity android-volley


【解决方案1】:

您可以使用请求实例化一个新的 Response.Listener,而不是将 onResponse 实现为类的一部分。这样一来,您将为每个请求提供一个单独的侦听器。

StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
        new Response.Listener() {
            @Override
            public void onResponse(String response) {
                 // individual response here
            }
        }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            // error here
        }
  });

【讨论】:

  • 谢谢,这解决了它,但是我已经为处理很多东西的请求创建了一个通用类,所以我真的很想尝试以某种方式“标记”请求,这样我就可以保留这个实施。您知道如何在 onResponse 方法中识别请求吗?
  • 请求标签仅用于取消实际请求。确定哪个请求调用 onResponse 的唯一方法是检查返回的数据并将其与调用匹配。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-08
  • 1970-01-01
  • 1970-01-01
  • 2015-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多