Pregunta

Tengo este problema en android.Tengo una actividad principal que llama a un hilo con esto.

   Runnable work = new Runnable() {

    public void run() {
        while (kill) {
            try {
                Thread.sleep(5000);
                connect();
                } catch (InterruptedException ex) {
                Logger.getLogger(MainActivity.class.getName()).log(Level.SEVERE, null, ex);
            }
        }


    }
};

matar es un booleano público en MainActivity.¿Qué puedo hacer para guardar el hilo para que cuando reanude la actividad todavía pueda cerrar el hilo?

¿Fue útil?

Solución

Creo que quieres hacer algo más cercano a lo que propone esta solución .

Sin embargo, si realmente desea seguir haciéndolo en un Thread, le sugiero que extienda una nueva clase de Thread y agregue un método llamado killMe().Esto modificará la bandera (ahora privada ) booleana kill.Luego, en su onRetainNonConfigurationInstance() puede devolver este Thread y puede recuperarlo nuevamente en onResume.Si regresa y la actividad no ha sido eliminada, entonces está bien, puede simplemente llamar a killMe() en el Thread existente.

Ejemplo:

 @Override
  public Object onRetainNonConfigurationInstance() {
    return thread;
  }

Otros consejos

¿Por qué quieres cerrar el hilo del currículum?

¿Por qué no iniciar el hilo en la parte del currículum y luego poner un bloque finalmente para manejar el hecho de que el connect() se interrumpe, y luego cuando se reinicia solo necesitas volver a conectarte y hacer la operación.

En el caso de dispositivos móviles, lo mejor que puedes hacer es marcar en algún almacenamiento persistente donde te encuentres, de modo que si te interrumpen puedas continuar cuando el Activity se inicia de nuevo.

Tienes una alta posibilidad de que te interrumpan, así que diseña para ello.

El sistema operativo puede eliminar el hilo, por lo que no hay nada que guardar y eliminar más tarde.

Si realmente necesitas hacer algo como esto, inicia un RemoteService ya que se ejecutará en un proceso diferente al de su Activity y es más probable que se quede.

Es posible que desee ver esta pregunta:

Servicio remoto de Android

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top