Android 截击如何排序请求
我想背靠背调用3种服务方法(A、B和C)。重要的一点是B必须在收到A的响应后调用,B和C之间的情况也是一样的。我使用Android 截击如何排序请求,android,request,android-volley,Android,Request,Android Volley,我想背靠背调用3种服务方法(A、B和C)。重要的一点是B必须在收到A的响应后调用,B和C之间的情况也是一样的。我使用RequestQueue.add(…)将所有请求添加到队列中。但现在请求B在收到A的响应之前被调用。是否可以使用volley库来管理它 我知道我可以在收到A的响应后请求B,但我想知道can volley是否能够完成这项工作。您可以实现自己的响应侦听器,以便在响应回调方法中调用A到B和B到C 这里有一个简单的例子: Volley本身无法做到这一点,但如果您实现Response.Lis
RequestQueue.add(…)
将所有请求添加到队列中。但现在请求B在收到A的响应之前被调用。是否可以使用volley库来管理它
我知道我可以在收到A的响应后请求B,但我想知道can volley是否能够完成这项工作。您可以实现自己的响应侦听器,以便在响应回调方法中调用A到B和B到C 这里有一个简单的例子:
Volley本身无法做到这一点,但如果您实现Response.Listener并在其中添加您的逻辑,它就可以做到这一点您可以实现自己的响应侦听器,以便在响应回调方法中调用A到B和B到C 这里有一个简单的例子:
Volley本身无法完成,但如果您实现Response.Listener并在其中添加您的逻辑,它就可以完成。您不能给请求下达命令,但您可以让它们一个接一个地运行。为此,您需要实现自己的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();
你不能给请求下命令,但你可以让它们一个接一个地运行。为此,您需要实现自己的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();
在收到A的响应后,您需要对请求B进行排队。我知道这一点,但我希望使用自动逻辑来实现这一点。在收到每个请求的响应时,都有一个回调。使用它。。。Volley没有这样一个具体而容易的实现。在收到A的响应后,您需要对请求B进行排队。我知道,但我希望使用自动逻辑来实现这一点,即使用截击在收到每个请求的响应时,都有一个回调。使用它。。。Volley没有这样一个具体而容易的实现。它仍然让您无法编写一些代码。