2013-10-22 83 views
0

我想調用3種服務方法(A B和C)背對背。重要的一點是B必須在收到來自A的響應之後被調用,以及B和C之間的相同情況。我使用RequestQueue.add(...)將所有請求添加到隊列中。但是現在請求B在從A接收到響應之前調用。是否可以使用volley庫來管理它。排球如何訂購請求

我知道我可以在收到A的回覆後做請求B,但我想知道可以排除這項工作。

+0

您需要在收到來自A的響應後排隊請求B. –

+0

我知道,但我希望自動邏輯使用凌空 – KAPLANDROID

+0

有一個回調時,每個請求收到響應。使用它... Volley沒有這樣的特定和簡單的實現。它仍然讓你無法編寫一些代碼。 –

回答

2

您可以實現您自己的Response偵聽器,以便您可以在響應回調方法中調用A到B和B到C.

這裏有一個簡單的例子:https://stackoverflow.com/a/17278867/508126

凌空不能做到這一點本身,但如果你實現Response.Listener並添加您的邏輯,它

+5

鏈接已死。 –

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();