Mi aplicación tiene algunas actividades que en la primera conecto un socket para comunicarme con un servidor sobre las demás actividades. Este socket se ejecuta en un hilo de trabajo.Cerrar socket al finalizar la aplicación
Mi pregunta es: ¿dónde puedo cerrar este conector cuando la aplicación está terminando? Usando el botón BACK por ejemplo ...
Pensé cerrar el socket en onDestroy()
de la última actividad pero esta actividad puede ser destruida por el sistema en tiempo de ejecución y cerrar el socket incluso si la aplicación no está terminando. No quiero esto
Mi método de la manipulación de la conexión de socket hilo run()
es como:
public void run() {
if (this.bliveclient.isConnected()){
try {
//...
while (running) {
//waiting for input data and do something...
}
}
catch (IOException ex) {
//handle exception
}
finally{
try {
mySocket.close();
} catch (IOException ex) {
//handle exception
}
}
}
Pero el bloque finally
nunca es llamado.
¿Alguien me puede dar alguna pista?
nunca dejas de 'ejecutar' o el hilo se mata. El manejo de red requerido por múltiples actividades parece ser un buen lugar para moverlo a un servicio. – zapl
@zapl, la conexión TCP funciona bien. Puedo recibir y enviar datos correctamente ... Mi único problema es cerrar el socket, porque el servidor también necesita cerrar este socket. – amp