Android – cannot execute task the task has already been executed (a task can be executed only once)
Al usar las AsyncTask en android puede aparecer el siguiente error:
cannot execute task the task has already been executed (a task can be executed only once)
Esto es debido a que estamos intentando ejecutar 2 veces un mismo hilo, y eso no es posible, lo que si podemos hacer es lanzar un nuevo hilo que ejecute la misma tarea.
Seguramente tengamos algo similar a lo siguiente
public void lanzaAsincrona(View view) {
downloadTask.execute(uri);
}
En donde downloadTask esta igualado posiblemente en el onCreate de la siguiente manera
downloadTask = new myDownloadTask();
de esta forma creamos una nueva instancia de nuestra clase en la variable downloadTask, si borramos esa linea en el onCreate, y la copiamos dentro del método lanzaAsincrona, lo arreglaremos, ya que cada vez que llamemos a ese método crearemos una nueva instancia, por lo que se ejecutara en un nuevo hilo; debería quedar algo así
public void lanzaAsincrona(View view) {
downloadTask = new myDownloadTask();
downloadTask.execute(uri);
}
o en su versión resumida
public void lanzaAsincrona(View view) {
new myDownloadTask().execute(uri);
}
Espero os sirva de ayuda
Apasionado de la montaña, del SEO y la programación a partes iguales, llevo más de 20 años trabajando en distintos sectores, pero siempre enfocado a la web, si quieres saber más de mí, sigue el enlace.