【问题标题】:Start Android activity when receiving the last response from multiple Volley requests在收到来自多个 Volley 请求的最后一个响应时启动 Android 活动
【发布时间】:2016-06-15 02:36:53
【问题描述】:

在启动画面的 OnCreate 方法中,我提出了 2 个不同的 Volley 请求:

RequestQueue queue = AppController.getInstance().getRequestQueue();
GsonRequest<WPPosts> myReq = new GsonRequest<WPPosts>(urlJson, WPPosts.class, null,createMyReqSuccessListener(),createMyReqErrorListener());
queue.add(myReq);

和另一个获取类别。

我想在收到这 2 个请求的最后响应时开始我的 MainActivity:

private Response.Listener<WPPosts> createMyReqSuccessListener() {
    return new Response.Listener<WPPosts>() {
        @Override
        public void onResponse(WPPosts response) {...}

无论响应是先到达还是最后到达。

这会是一种信号方法吗?

【问题讨论】:

    标签: android asynchronous android-volley semaphore


    【解决方案1】:

    只需创建一个扩展 Response.Listener 的类。此类还应包含一个静态变量计数。当您收到回调 onResponse() 时,将计数增加 1。

    当 count 为 2 时启动 MainActivity。

    请为您提出的两个截击请求使用相同的类实例。

    【讨论】:

      【解决方案2】:

      您不需要扩展侦听器或类似的东西。

      您可以在启动画面中设置一个静态 int,您可以在这些请求的 onResponse 中递增。 onResponse 在主线程中传递,因此您无需担心这里的线程问题。

      请注意,您可能希望在 onError 上增加此值,并且如果发生错误,您将永远无法进入主要活动 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-20
        • 2010-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多