Android 截击如何排序请求

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

我想背靠背调用3种服务方法(A、B和C)。重要的一点是B必须在收到A的响应后调用,B和C之间的情况也是一样的。我使用
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没有这样一个具体而容易的实现。它仍然让您无法编写一些代码。