0

最近我发布了一个关于 Android HTTP-post AsyncHttpClient 的问题。它位于:Android HTTP-post AsyncHttpClient下面是更新后的方法。如您所见,这是一个布尔方法。我将 done 变量作为全局变量,当用户单击登录按钮时,我检查 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;
}
4

2 回答 2

3

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

于 2012-07-11T15:05:04.000 回答
0

使用AsyncTaskpostLoginData在里面运行doInBackground(..)并返回布尔值。然后 AsyncTask 将处理它并postExecute(..)再次在您的主线程中运行,您可以在其中启动新活动或显示对话框。

于 2012-07-11T14:30:09.297 回答