ソケットを介してローカルサーバーと通信するアンドロイドアプリを作成しようとしています。通信は、JSONを使用して文字列で単純なコマンドとデータを渡します。クライアントは、サーバーからの受信メッセージを常に聞き、新しいデータが受信されたときにユーザーインターフェイスを更新する必要があります。Androidはサーバーソケットからのメッセージを受信します
私はバックグラウンドで実行されているバインドされたサービスであるネットワークサービスを作成しました。私の活動から私はサービスにバインドし、サービスオブジェクトのインスタンスを受け取ります。サービスオブジェクトには、サーバーにコマンドを送信するためのインスタンスメソッドが含まれています。
私の問題は、サーバーにメッセージを送信する可能性を遮断せずに、サービスがサーバーからのメッセージを常に聴取できるようにするにはどうすればいいですか?
private Socket socket = null;
private PrintWriter out = null;
private BufferedReader in = null;
private Listener listener;
private String host = "10.0.1.4";
private int port = 3000;
public NetworkService()
{
try {
if (socket == null)
{
socket = new Socket(this.host, this.port);
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
}
if(listener == null)
{
listener = new Listener();
Thread thread = new Thread(listener);
thread.start();
}
} catch (Exception e) {
// ...
}
}
}
public class Listener implements Runnable
{
@Override
public void run() {
try {
String line = null;
while((line = in.readLine()) != null)
{
// Do something. Never gets here
}
} catch (Exception e) {
// ...
}
}
}
ワットが意味します。アプリケーションが実行されているときや特定の期間、またはアプリケーションがサイレントモードになっているとき(アプリケーションがバックグラウンドで実行されているとき)にこれらのプロセスを実行したいのですか? – Sniper
いつでも私はサービスを利用できる必要がありますアプリケーションを使用しています。私はサーバーに単純な文字列コマンドを送ることができる必要があり、私はサーバーからデータを受け取ることができる必要があります。 –
アプリケーションの終了時まで、または一定期間、応答フォームサーバーを取得したいですか。 – Sniper