Create a interface VolleyResultCallBack
public interface VolleyResultCallBack {
void onVolleyResultListener(String response, String requestUrl);
void onVolleyErrorListener(VolleyError error);
}
make activity implement this interface ,
your method will be like
public static void syncData(Context mContext, String url,VolleyResultCallBack resultCallBack) {
try {
RequestQueue queue = Volley.newRequestQueue(mContext);
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
jsonResponse=response.toString();//what I should do here to trigger another class that responds achieved
resultCallBack.onVolleyResultListener(jsonResponse,url);
} catch (Exception e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
try {
Log.e("Response", "error");
resultCallBack.onVolleyErrorListener(error);
// updateForecastUI(isCentigradeType);
} catch (Exception e) {
e.printStackTrace();
}
}
});
jsonObjectRequest.setRetryPolicy(new DefaultRetryPolicy(
Constants.MY_SOCKET_TIMEOUT_MS,
Constants.MAX_RETRY,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
jsonObjectRequest.setShouldCache(false);
queue.add(jsonObjectRequest);
} catch (Exception e) {
e.printStackTrace();
}
return jsonResponse;
}
.
In your activity make request like this
YourClassName.syncData(this,url,this);
you will get responce in onVolleyResultListener method;
@Override
public void onVolleyResultListener(String response, String requestUrl) {
if(requestUrl.contains(url){ // required to check because there may be multiple requests in same activity
//do something with responce
}
}
handle error in onVolleyErrorListener
@Override
public void onVolleyErrorListener(VolleyError error) {
//do something with error ,may be show a toast
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…