Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Los hilos AsyncTask nunca mueren

Estoy utilizando AsyncTask s para buscar datos en respuesta al usuario presionando un botón. Esto funciona bien y mantiene la interfaz de respuesta durante la búsqueda de los datos, pero cuando me fui con lo que estaba pasando en el depurador de Eclipse, me di cuenta de que cada vez que se creó un nuevo AsyncTask (que es muy a menudo, ya que sólo se puede utilizar Una vez), se estaba creando un nuevo hilo, pero nunca terminó.

El resultado es un gran número de threads AsyncTask simplemente sentados allí. No estoy seguro si esto es un problema en la práctica o no, pero me gustaría realmente deshacerme de esos hilos adicionales.

¿Cómo puedo matar estos hilos?

  • Android - ¿cómo pasar los datos al Runnable en runOnUiThread?
  • Cómo pausar y reanudar un subproceso de surfaceView
  • Uso de la concurrencia de Android
  • ¿Puedo tener un ejemplo de mostrar un brindis usando runOnUiThread.
  • TimerTask vs Thread.sleep vs Handler postDelayed - más preciso para llamar a la función cada N milisegundos?
  • Emisión de concurrencia para la cancelación del bucle de encuesta larga
  • AsyncTask para actualizar widget - cómo acceder a textviews en onPostExecute ()?
  • Ejemplo de comunicación con HandlerThread
  • 3 Solutions collect form web for “Los hilos AsyncTask nunca mueren”

    AsyncTask gestiona un grupo de subprocesos, creado con ThreadPoolExecutor . Tendrá de 5 a 128 hilos. Si hay más de 5 hilos, esos hilos adicionales se mantendrán durante un máximo de 10 segundos antes de ser eliminados. (Nota: estas cifras son para el código de código abierto actualmente visible y varían según la versión de Android).

    Deje los hilos AsyncTask solos, por favor.

    Además de la respuesta de CommonsWare:

    Actualmente estoy utilizando Android 2.2, y mi aplicación utiliza no más de un AsyncTask en cualquier momento, pero estoy creando una nueva cada x minutos. En primer lugar aparecen nuevos AsyncTask Threads (un nuevo Thread para un AsyncTask nuevo), pero después de 5 threads (como se menciona por CommonsWare) que sólo se mantienen visibles en la ventana de depuración, y volver a utilizarse cuando nuevos AsyncTask hilos son necesarios. Sólo se quedan allí hasta que el depurador se desconecta.

    El mismo síntoma aquí. En mi caso, los hilos colgados después de haber matado la actividad, y esperaba que la aplicación para cerrar completamente. Problema parcialmente resuelto mediante el uso de un solo ejecutor de subprocesos:

      myActiveTask.executeOnExecutor(Executors.newSingleThreadExecutor()); 

    Esto hizo que el hilo desapareciera después de completar su trabajo.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.