我正在使用volley库进行API调用并获得响应。但我想等待从API获得完整的响应,然后在Volley请求下执行其余代码。我尝试使用接口并使用线程,但它无法正常工作。
请给我一些实施此建议的建议? 感谢。
答案 0 :(得分:1)
当您以截击方式发送请求时,如果请求成功或发生任何错误,它将回电给您:
所以你需要调用一个方法,该方法包含在得到响应后应该执行的代码:
我在这里评论了你可以调用该方法的地方:
JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.POST, url, js, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.e(TAG, "Successfully signed in : " + response.toString());
//put your code here
// added method call
parseJson();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
String json = null;
Log.e(TAG, "Error at sign in : " + error.getMessage());
// put your code here
}
});
已修改:
用于在json解析后执行代码:
处理程序:IncomingHandler
类
private static class IncomingHandler extends Handler {
private WeakReference<MainActivity> yourActivityWeakReference;
public IncomingHandler(MainActivity yourActivity) {
yourActivityWeakReference = new WeakReference<>(yourActivity);
}
@Override
public void handleMessage(Message message) {
if (yourActivityWeakReference != null) {
MainActivity yourActivity = yourActivityWeakReference.get();
switch (message.what) {
case 0:
// add your code here
break;
}
}
}
}
在onCreate()
// Declaration of handler
private IncomingHandler incomingHandler;
// initialize handler
incomingHandler=new IncomingHandler(MainActivity.this);
示例解析json方法并使用handler:
发送消息 public void parseJson() {
for (int i = 0; i < 50; i++) {
System.out.println("Printing :" + i);
}
incomingHandler.sendEmptyMessage(0);
}
感谢。!!