我想調用3種服務方法(A B和C)背對背。重要的一點是B必須在收到來自A的響應之後被調用,以及B和C之間的相同情況。我使用RequestQueue.add(...)
將所有請求添加到隊列中。但是現在請求B在從A接收到響應之前調用。是否可以使用volley庫來管理它。排球如何訂購請求
我知道我可以在收到A的回覆後做請求B,但我想知道可以排除這項工作。
我想調用3種服務方法(A B和C)背對背。重要的一點是B必須在收到來自A的響應之後被調用,以及B和C之間的相同情況。我使用RequestQueue.add(...)
將所有請求添加到隊列中。但是現在請求B在從A接收到響應之前調用。是否可以使用volley庫來管理它。排球如何訂購請求
我知道我可以在收到A的回覆後做請求B,但我想知道可以排除這項工作。
您可以實現您自己的Response偵聽器,以便您可以在響應回調方法中調用A到B和B到C.
這裏有一個簡單的例子:https://stackoverflow.com/a/17278867/508126
凌空不能做到這一點本身,但如果你實現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();
您需要在收到來自A的響應後排隊請求B. –
我知道,但我希望自動邏輯使用凌空 – KAPLANDROID
有一個回調時,每個請求收到響應。使用它... Volley沒有這樣的特定和簡單的實現。它仍然讓你無法編寫一些代碼。 –