如何在android中等待完成凌空异步任务?

时间:2015-10-06 11:46:26

标签: android android-asynctask

我正在使用volley库进行API调用并获得响应。但我想等待从API获得完整的响应,然后在Volley请求下执行其余代码。我尝试使用接口并使用线程,但它无法正常工作。

请给我一些实施此建议的建议? 感谢。

1 个答案:

答案 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);
    }

感谢。!!