在java 8中有新的Lambda函数和方法引用。 Android上有类似的东西吗?使用volley我需要传递一个回调函数来处理onResponse,处理这个问题的最佳方法是什么?
答案 0 :(得分:2)
我这样做:将所有齐射调用放在api文件中,该文件从应用程序单例中调用,
public Request<?> getMessage(int messageId, boolean maxBodySize, Response.Listener<MessageData> responseListener, Response.ErrorListener errorListener) {
String url = apiURL + MESSAGE + "?";
int method = Request.Method.GET;
GsonRequest<MessageData> request = new GsonRequest<MessageData>(
method,
url,
MessageData.class,
null,
responseListener,
errorListener,
gson) {
@Override
public Map<String, String> getHeaders() {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Accept", "application/json");
return headers;
}
};
request.setRetryPolicy(new DefaultRetryPolicy(
SOCKET_TIMEOUT_MS,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
return mQueue.add(request);
}
从您想要的地方拨打电话:
getApi().getMessage(messageNumber, true,
new Response.Listener<MessageData>() {
@Override
public void onResponse(MessageData data) {
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
resolveResponseStatus(error);
}
}
);