Estoy tratando de crear una aplicación para Android que se comunica con un servidor local a través de un socket. La comunicación pasa comandos simples y datos en cadenas usando JSON. El cliente debe escuchar constantemente los mensajes entrantes del servidor y actualizar la interfaz de usuario cuando se reciben nuevos datos.Android para escuchar los mensajes de socket del servidor
Así que he creado un servicio de red que es un servicio cota ejecuta en segundo plano. De mi actividad me enlace al servicio y recibo una instancia del objeto de servicio. El objeto de servicio contiene métodos de instancia que me permiten enviar comandos al servidor.
Mi problema es, ¿Cómo puedo activar mi servicio a escuchar constantemente por los mensajes del servidor sin bloquear la posibilidad de enviar mensajes al servidor?
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) {
// ...
}
}
}
A lo que se refiere. ¿Desea que se ejecute este proceso cuando la aplicación se está ejecutando o durante un cierto período de tiempo o cuando la aplicación está en modo silencioso (cuando la aplicación está ejecutándose en segundo plano) ... – Sniper
Bueno, necesito que el servicio esté disponible siempre que estoy usando la aplicación. Necesito poder enviar comandos de cadena simples al servidor, y necesito poder recibir datos del servidor. –
¿Desea obtener el servidor de formulario de respuesta hasta el final de su aplicación o durante un período de tiempo determinado? – Sniper