11

TCPサーバーへのTCP接続を必要とするAndroidアプリケーションに取り組んでいます(Node.jsで書かれています)

私の Android TCP クライアントは動作しており、メッセージを送受信できます。

私の具体的な質問は次のとおりです。

  1. Android でサーバーへの TCP 接続を処理する最良の方法は何ですか?
  2. 接続を維持する方法 (onDestroy() などで適切に接続を閉じる) ?
  3. AsyncTask を使用する方法はありますか (Android 4.0 では許可されていない通常の Thread クラスを除く)

次のような AsyncTask にソケット接続があります。

@Override
protected Void doInBackground(Void... params) {
        try {
            Log.d("TCP_MESSAGE", "Connecting...");

                socket = new Socket(MY_LOCAL_IP, 8080);
                dataOutput = new DataOutputStream(socket.getOutputStream());

                inputstream = new InputStreamReader(socket.getInputStream());
                input = new BufferedReader(inputstream);


            while (!canceled) {
                String message = input.readLine();
                handleMessage(message);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return null;
}

AsyncTask で接続している理由は、Android 4.0 を使用しており、通常のスレッドでネットワーク コードを使用することが許可されていないためです。

4

2 に答える 2

2

AndroidでサーバーへのTCP接続を処理する最良の方法は何ですか?

これは、アプリの複雑さとアプリで何をしたいかによって大きく異なります。Android ネットワーキングの詳細はありません。

接続を維持する方法 (onDestroy() などで適切に接続を閉じる) ?

落ちたときはいつでもソケットを開き、それをクラスフィールドとして保持します。onDestroy()呼ばれたら閉じる。初めてではないか確認してくださいnull

AsyncTask を使用する方法はありますか (Android 4.0 では許可されていない通常の Thread クラスを除く)

Android 4.0 (API14) では通常の Java スレッドを使用できます。Android で許可されていないのは、メイン スレッド ( UIThread ) でネットワーク コードを使用することです。

于 2012-10-19T13:37:16.103 に答える