我是一名初學者的android開發者,現在我正面臨使用google volley進行http調用的大問題。我做了我自己的庫來處理所有REST API請求,並且我必須將響應返回給ACTIVITY,但是調用是異步的,並且在我調用返回的時候沒有到達。這是LIB:Android排球:自己的REST庫
public class RestServices implements IRestServices {
Object responseFromServer = null;
public Object getJsonResponseObjectByAttributes(String... attributes) {
RequestQueue queue = VolleyProvider.getQueue(ConnectionConstants.context);
String finalUri = makeRequestUri(attributes);
JsonObjectRequest jsonRequest = new JsonObjectRequest(
Request.Method.GET, finalUri, null, new Response.Listener<JSONObject>() {
public void onResponse(JSONObject response) {
}
}, new Response.ErrorListener() {
public void onErrorResponse(VolleyError error) {
// TODO Auto-generated method stub
}
});
jsonRequest.setTag(ConnectionConstants.TAG);
queue.add(jsonRequest);
return responseFromServer;
}
而這裏就是我所說的服務:
public class MainViewModel implements IMainViewModel {
@Inject IRestServices restServices;
// Define our server URL
public static final String SERVER_URL = "API_Url";
public String getServerResponse() {
Object jsonResponse = restServices.getJsonArrayResponseObjectByAttributes("");
User user = (User) jsonResponse;
return user.toString();
}
public void InitializeViewModel(Context context) {
restServices.InitializeService(SERVER_URL, context);
}
}
我還使用Roboguice政府間海洋學委員會。提前致謝。
謝謝,但我正在尋找使lib可以從調用方完全隔離,目的是重用它。那麼有沒有什麼辦法在lib中執行等待? – Ultegra
是的,在調用'getJsonArrayResponseObjectByAttributes'的'restServices'中添加一個新方法,並在返回結果之前實現等待。 – Simulant
我要試一試。我會更新我的結果。謝謝。 – Ultegra