Android HTTP-post AsyncHttpClient新线程问题

时间:2012-07-11 13:41:56

标签: android http android-asynctask http-post

最近我发布了一个关于Android HTTP-post AsyncHttpClient的问题。它位于:Android HTTP-post AsyncHttpClient以下是更新的方法。如您所见,这是一个布尔方法。我将done变量作为全局变量,当用户单击Login按钮时,我检查postLoginData是返回true还是false。我需要转到另一个活动,否则我会显示一个对话框。但是在一个新线程中将done设置为true并且我不能让我的主线程等待,因为这将导致另一个错误。我不确定我的工作应该是什么。我希望有人会发布一个使用AsyncHttpClient登录的教程。

public boolean postLoginData(String userid, String password) {
    done = false;
    params1.put("username", "");
    params1.put("password", ""); 
    Log.d("addteq", "Start Get Post"); 
    AsyncHttpClient myClient = new AsyncHttpClient();
    myClient.post("http://192.168.2.108/htdocs/?action=login",
            params1, new AsyncHttpResponseHandler() {
                @Override
                public void onSuccess(String response) {
                    done = true;
                    System.out.println("login success");
                }
            });
    return done;
}

2 个答案:

答案 0 :(得分:3)

我的做法是错误的。该库处理后台线程中的计算: http://loopj.com/android-async-http/ 基于Apache的HttpClient库构建的基于异步回调的Android Http客户端。所有请求都是在应用程序的主UI线程之外发出的,但任何回调逻辑都将在使用Android的Handler消息传递创建回调的同一线程上执行。

答案 1 :(得分:0)

使用AsyncTask。 在postLoginData内运行doInBackground(..)并返回布尔值。然后,AsyncTask会处理它并再次在主线程中运行postExecute(..),您可以在其中开始新活动或显示对话框。