0

最近、Android HTTP-post AsyncHttpClient に関する質問を投稿しました。ここにあります: Android HTTP-post AsyncHttpClient以下は、更新されたメソッドです。ご覧のとおり、これはブール メソッドです。グローバル変数として done 変数を使用し、ユーザーが [ログイン] ボタンをクリックすると、postLoginData が true または false を返したかどうかを確認します。true の場合は、別のアクティビティに移動する必要があります。それ以外の場合は、ダイアログを表示します。しかし、完了は新しいスレッドで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/ Apache の HttpClient ライブラリの上に構築された、Android 用の非同期コールバック ベースの Http クライアント。すべてのリクエストはアプリのメイン UI スレッドの外部で行われますが、コールバック ロジックは、Android の Handler メッセージ パッシングを使用して作成されたコールバックと同じスレッドで実行されます。

于 2012-07-11T15:05:04.000 に答える
0

AsyncTaskを使用します。postLoginData内部を実行doInBackground(..)してブール値を返します。その後、AsyncTaskがそれを処理postExecute(..)し、メインスレッドで再度実行して、新しいアクティビティを開始したり、ダイアログを表示したりできます。

于 2012-07-11T14:30:09.297 に答える