ここでスタックオーバーフローで質問するのは初めてです。 私はこれを簡潔にしておきます。Javaスレッドが正しく動作していないようです
私は単純なクライアントソケットアンドロイドアプリケーションを書いています。 私が接続しているサーバーには、Aliceという名前のチャットロボットがあります。 私はサーバに接続できましたが、 "Hello from alice"というメッセージが表示されますが、それ以上のメッセージを受信していないためスレッドが停止しているようです。ここで
はいくつかのコードです:
@Override
public void run() {
try
{
while (true)
{
String _input = _rd.readLine();
if (_input != null)
{
_field.append("Alice : "+ _input+"\n");
}
else
{
_field.append("null");
}
sleep(50);
}
} catch (IOException e) {
e.printStackTrace();
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
あなたは私がメッセージを受信しない場合でも、「ヌル」を追加することによって、自分のコードのトラブルシューティングをしようとしている見ることができるように、しかし、これはどちらも私のEditTextに示されています。
ユーザーがボタンを押したときに私のメインアクティビティクラスから.start()
を呼び出します。
@Override
public void onClick(View arg0) {
setContentView(R.layout.second);
InitiateSecondFrame();
_cs = new ClientSocket();
String _check = _cs.EstablishConnection(_host.getText().toString(),
Integer.parseInt(_port.getText().toString()),
(EditText)findViewById(R.id.historyField));
_cs.start();
Toast.makeText(getApplicationContext(), _check, 100).show();
SaveHostPort(_host.getText().toString(), _port.getText().toString());
}
});
ClientSocket
クラスはスレッドによって拡張し、Runnableを実装して、私はまた、単に拡張または実装しようとしましたさ。 エラーメッセージは一切表示されません。 私が与えた情報が、間違ったことを理解するのに十分であることを願っています。 私はマルチスレッドとソケットでは新しいので、何か基本的なものを見逃しているかもしれないことを覚えておいてください。
私は今何が起こっているのか、助けてくれてありがとう! – Orujimaru