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?

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.

  • ¿Cuál es la diferencia entre Thread.run () y Handler.post () y Service en Android?
  • ¿Cómo ejecutar una función cada dos segundos en Java en Android?
  • IllegalArgumentException en StatFs en WebViewCore thread interno
  • Java.lang.RuntimeException: No se puede crear el controlador dentro de hilo que no ha llamado Looper.prepare ();
  • RxJava - subir archivos secuencialmente - emitir el siguiente elemento, cuando onNext llamado
  • Uso de la batería, ¿qué esperar?
  • Carga pesada en el hilo que causa problemas de memoria
  • AsyncTask con rotación de pantalla - onRetainNonConfigurationInstance obsoleta
  • Error de Android Studio: "El método getText () debe ser llamado desde el subproceso de interfaz de usuario, el subproceso inferido actualmente es el trabajador
  • ¿La declaración oneway en Android .aidl garantiza que el método será llamado en un hilo separado?
  • Cómo crear un hilo Looper, a continuación, enviar un mensaje de inmediato?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.