2010-08-17 7 views
10

Mientras trabajaba en una aplicación noté que el número de subprocesos sigue creciendo todo el tiempo AsyncTask Threads permanecen abiertos por alguna razón (estoy seguro de que terminaron el proceso y salieron) No tengo idea de por qué Sigo creando más hilos de este tipo y siguen funcionando indefinidamente. ¿hay alguna manera de verificar que estos hilos terminen en el cumplimiento? ¿Existen problemas conocidos con los subprocesos de AsyncTasks que permanecen abiertos?Android AsyncTask permanece en estado de ejecución después de completar

Cuando se ejecuta esto:

public class DoNothingTask extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected Void doInBackground(Void... params) { 
      // TODO Auto-generated method stub 
      return null; 
     } 

    } 

que veo en el Debbuger un nuevo hilo para cada vez que lo hago new DoNothingTask().execute(null); como folows

Thread[<ThreadNumber>AsyncTask#1](running)

, mi pregunta es ¿por qué ¿Es esto? mi aplicación depende de AsyncTask y no puedo crear un hilo nuevo y seguir con vida después de cada tarea.

Gracias, Totem

Respuesta

10

estaba golpeando mi cabeza en esto también, y acabo de encontrar esta respuesta (así, es más una explicación de una respuesta):

CommonsWare explica:

AsyncTask gestiona un grupo de subprocesos , creado con ThreadPoolExecutor. Tendrá de 5 a 128 hilos. Si hay más de 5 subprocesos, esos subprocesos se mantendrán durante al menos 10 segundos antes de ser eliminados. (nota: estas cifras corresponden al código fuente abierto actualmente visible y varían según el lanzamiento de Android).

Deje los hilos de AsyncTask solo, por favor.

pregunta Fuente: AsyncTask threads never die

-2

usted debe utilizar

thread.join 

para estar seguro de que un hilo completa. ¿Estás haciendo esto?

+3

no creo que esto es aplicable para AsyncTask(). – totem

1

No estoy seguro de si esto está relacionado, pero me enfrenté a un problema similar en una de mis aplicaciones también.

Tengo una actividad que inicializa los hilos TimerTask. Las tareas se ejecutan correctamente en el intervalo especificado, pero después de un tiempo de inactividad, el número de subprocesos parece aumentar (lo que demuestra que los subprocesos permanecen abiertos y se crean nuevos subprocesos). El problema fue la carga y descarga dinámica de mi aplicación por Android VM. Los subprocesos originales nunca solían ser eliminados, ya que en cada nueva carga de aplicación solía suceder la inicialización del subproceso. Esta es la razón por la cual el número total de subprocesos en mi aplicación solía aumentar.

También hay una implementación similar en su aplicación.

+0

no, no estoy creando los hilos en la creación de AsyncTasks que son de un solo disparo de todos modos. – totem

Cuestiones relacionadas