使用回调的Android程序逻辑流程

时间:2013-12-14 07:11:21

标签: java android multithreading asynchronous android-asynctask

我正在开发Android应用程序,我需要在其中进行大量的http查询。由于Android有限制阻止程序在UI线程上发出http请求,我必须使用大量的Async方法来获取服务器的响应。我不是使用回调的大师,我现在面临着一个代码设计问题:

基本上,我有一个要显示的活动。我希望应用程序在创建活动时向服务器发出HttpRequest,因此我可以根据查询响应准备活动内容。

由于我使用Google Volley库发出http请求,因此我的代码设计是:

// in the Activity
OnCreate(Bundle b){

String response = RequestManager.makeRequest(args);

// other works based on the response in this activity.
}



// RequestManager Class
public static String makeRequest(args){

String url = getUrl();

// response callback
Response.Listener<String> responseListener = new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {

            // Don't know what to do here
        }   
    };

// error callback
Response.ErrorListener errorListener = new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {

            // deal with errors
        }
    };

BuildRequestAndPushToQueue(url, responseListener, errorListener);

// No way to return the response!
}

我知道我的设计完全不正确,因为String response = RequestManager.makeRequest(args);意图等待阻塞调用,但调用实际上是异步的。
我的最终目标是让响应String返回到活动中的某些代码,因此它可以使用活动上下文来完成其余的工作(比如访问imageview等)。但我不确定如何设计代码流来实现这一目标。

0 个答案:

没有答案