我想背靠背调用 3 种服务方法(AB 和 C)。重要的一点是必须在收到 A 的响应后调用 B,并且 B 和 C 之间的情况也相同。我使用将所有请求添加到队列中RequestQueue.add(...)
。但是现在在收到 A 的响应之前调用了请求 B。是否可以使用 volley 库来管理它。
我知道在收到 A 的响应后我可以做请求 B,但我想知道 volley 能做到这一点。
我想背靠背调用 3 种服务方法(AB 和 C)。重要的一点是必须在收到 A 的响应后调用 B,并且 B 和 C 之间的情况也相同。我使用将所有请求添加到队列中RequestQueue.add(...)
。但是现在在收到 A 的响应之前调用了请求 B。是否可以使用 volley 库来管理它。
我知道在收到 A 的响应后我可以做请求 B,但我想知道 volley 能做到这一点。
您可以实现自己的响应侦听器,以便在响应回调方法中调用 A 到 B 和 B 到 C。
这里有一个简单的例子:https ://stackoverflow.com/a/17278867/508126
Volley 不能自己做,但如果你实现 Response.Listener 并在其中添加你的逻辑,它就可以做到
你不能给 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();