0

我想背靠背调用 3 种服务方法(AB 和 C)。重要的一点是必须在收到 A 的响应后调用 B,并且 B 和 C 之间的情况也相同。我使用将所有请求添加到队列中RequestQueue.add(...)。但是现在在收到 A 的响应之前调用了请求 B。是否可以使用 volley 库来管理它。

我知道在收到 A 的响应后我可以做请求 B,但我想知道 volley 能做到这一点。

4

2 回答 2

2

您可以实现自己的响应侦听器,以便在响应回调方法中调用 A 到 B 和 B 到 C。

这里有一个简单的例子:https ://stackoverflow.com/a/17278867/508126

Volley 不能自己做,但如果你实现 Response.Listener 并在其中添加你的逻辑,它就可以做到

于 2013-10-22T12:03:51.127 回答
2

你不能给 request 一个命令,但你可以让它们一个接一个地运行。为此,您需要实现自己的RequestQueue

这是一个示例,它演示了如何使所有请求以相同的顺序执行,您将它们添加到队列中,因为它使用单线程执行。

// Copied from Volley.newRequestQueue(..); source code
File cacheDir = new File(context.getCacheDir(), "def_cahce_dir");

String userAgent = "volley/0";
try {
    String packageName = context.getPackageName();
    PackageInfo info = context.getPackageManager().getPackageInfo(packageName, 0);
    userAgent = packageName + "/" + info.versionCode;
} catch (PackageManager.NameNotFoundException e) {
}

if (stack == null) {
    if (Build.VERSION.SDK_INT >= 9) {
        stack = new HurlStack();
    } else {
        // Prior to Gingerbread, HttpUrlConnection was unreliable.
        // See: http://android-developers.blogspot.com/2011/09/androids-http-clients.html
        stack = new HttpClientStack(AndroidHttpClient.newInstance(userAgent));
    }
}

int threadPoolSize = 1; // means only one request at a time
RequestQueue queue = new RequestQueue(new DiskBasedCache(cacheDir), network, threadPoolSize);
queue.start();
于 2013-11-22T14:17:15.913 回答