2

クライアントの AsyncTask で Android サーバーの応答を取得しています。

問題は、サーバーが応答するまでクライアントを強制的に待機させるにはどうすればよいですか? サーバーが応答するのに数分かかる場合があります。

より具体的には、socket.getInputStream.read() に何も含まれていないかどうかを検出し、クライアントを待機ループに強制するにはどうすればよいですか?

4

3 に答える 3

4

このようなコードを作成しました

boolean status;
// isURLReachable is the method to check server is available or not

status = isURLReachable(context);
                        if (status == true) {
                            h.post(new Runnable() {

                                @Override
                                public void run() {
                                    checkLoginDialogue
                                            .setTitle("Authenticating User");

                                }
                            });
                            handlerForLogin.sendMessage(handlerForLogin
                                    .obtainMessage());
                        } else {
                            h.post(new Runnable() {

                                @Override
                                public void run() {
                                    if (checkLoginDialogue.isShowing()) {
                                        checkLoginDialogue.dismiss();
                                    }
                                }
                            });
                            System.out.println("status IS " + status);
                            handler.sendMessage(handler.obtainMessage());

                        }

この助けを願っています

于 2013-10-17T10:13:18.700 に答える
0

AsyncTask からクライアントにブロードキャストを送信できます。

  • クライアントは自分の仕事をします。
  • 次に、AsyncTask がデータを取得しています。
  • AsyncTask がデータの取得を完了すると、ブロードキャストが送信されます。
  • クライアントは、ブロードキャスト レシーバーでブロードキャストを受信し、作業を続けます。-> インターネットで「Android BroadcastReceiver チュートリアル」を検索すると、良い例が見つかります。

これがあなたに役立つことを願っています=)。

于 2013-10-17T10:10:43.753 に答える