Tengo un hilo usando el controlador y mensajes para enviar datos a la actividad. trabajo todo bien, excepto cuando se detiene la actividad:Cómo solucionar un mensaje de nulo que envía a un controlador en una advertencia de hilo muerto?
null sending message to a Handler on a dead thread
java.lang.RuntimeException: null sending message to a Handler on a dead thread
at android.os.MessageQueue.enqueueMessage(MessageQueue.java:196)
at android.os.Looper.quit(Looper.java:173)
at pocket.net.ComD.stopConnection(ComD.java:154)
at pocket.net.ComD.finalize(ComD.java:184)
at dalvik.system.NativeStart.run(Native Method)
En mi actividad, tengo el siguiente código que me permite cerrar todas las conexiones de red abierta por el hilo:
public void onPause()
{
if(this.myThread != null) {
this.myThread.stopConnection();
}
}
En mi Tema:
public void run()
{
this.setName("MessagesThread");
if(this.initSocket())
{
Looper.prepare();
this.threadHandler = initHandler();
Looper.loop();
}
else
{
this.timeout();
}
}
public void stopConnection()
{
if(this.threadHandler != null) {
this.threadHandler.removeMessages(ALIVE); // Remove a delayed message
this.threadHandler.getLooper().quit(); // Warning
}
this.connected = false;
if(this.client != null) {
this.client.close();
}
}
private Handler initHandler()
{
return new Handler() {
public void handleMessage(Message msg)
{
switch(msg.what)
{
//Handling messages
}
}
}
}
cuando recibo el aviso de "envío de mensajes nula a un manejador de un hilo muerto" es que la actividad tratando de enviar un mensaje al hilo o la oppposite?
¿Cómo puedo solucionar esto?
Gracias
pensé que quería enviar datos desde el hilo de trabajo a la actividad (hilo de interfaz de usuario)? Si es así, ¿no debería el 'Handler' estar en la' Activity' mientras el trabajador enhebra 'sendMessage' a él? Perdón si malinterpreté tu lógica –
El hilo de trabajo envía datos a la actividad de hecho. Pero la actividad pide estos datos (y otras cosas) al hilo de trabajo. Entonces ambos tienen controlador y mensajes – grunk