0

3 つのサービス メソッド (AB と C) を連続して呼び出したい。重要な点は、A からの応答を受け取った後に B を呼び出す必要があり、B と C の間でも同じ状況が発生することです。を使用してすべてのリクエストをキューに追加しますRequestQueue.add(...)。しかし、Aからの応答を受け取る前にリクエストBが呼び出されるようになりました.ボレーライブラリを使用してこれを管理することは可能ですか.

Aからの応答を受け取った後、リクエストBを実行できることは知っていますが、ボレーがこの作業を実行できるかどうかを知りたい.

4

2 に答える 2

2

リクエストに順序を与えることはできませんが、次々と実行させることはできます。このためには、独自の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 に答える
2

独自の Response リスナーを実装して、応答コールバック メソッドで A から B および B から C を呼び出すことができます。

ここに簡単な例があります: https://stackoverflow.com/a/17278867/508126

Volley 自体はできませんが、Response.Listener を実装してロジックを追加すれば可能です。

于 2013-10-22T12:03:51.127 に答える