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.
- Convertir flujo de entrada en mapa de bits
- Android: el diseño de inflado toma mucho tiempo
- ¿Cómo puedo implementar un Timer / TimerTask que ejecuta un AsyncTask? (Androide)
- No recibe datos de ubicación del hilo
- Actualizar la interfaz de usuario desde el subproceso
¿Cómo puedo matar estos hilos?
- Nuevo Tema (tarea) .start () VS ThreadPoolExecutor.submit (tarea) en Android
- ¿Cuál es la forma correcta de utilizar AudioTrack en modo estático?
- Glide assert: java.lang.IllegalArgumentException: Debe llamar a este método en el hilo principal
- java.lang.IllegalStateException: Llamar Ver métodos en otro subproceso que el subproceso de interfaz de usuario
- Inicio de un servicio en un subproceso separado
- Manera alternativa de subprocesos bajo Android
- ¿Por qué la mayoría de los marcos de la interfaz de usuario se subproceso único?
- Iniciar un servicio en un proceso separado android
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.
- Debe tener controlador de subtítulos ya establecido error Mediaplayer Android
- Bloquear la orientación de la pantalla (Android)