Llamar a una tarea asincrónica reiniciada que falla con 'la tarea ya se ha ejecutado'

Tengo una tarea de búsqueda que, cuando se hace clic en el botón por segunda vez, cancela la tarea que se está ejecutando actualmente y la recrea.

if (_searchAsyncTask != null) {
    // cancel if already running
    _searchAsyncTask.cancel(true);
}
_searchAsyncTask = new SearchAsyncTask(this);
_searchAsyncTask.execute(data);

Esto está fallando en la última línea del código anterior como si hubiera llamado a la tarea asincrónica original nuevamente.

java.lang.IllegalStateException: Cannot execute task: the task has already been executed (a task can be executed only once)

¿Me estoy perdiendo de algo? ¿Tengo que esperar hasta que la instancia original seaCancelled ()?

Respuesta 1

En un proyecto (http://jodd.org) tenemos algunas clases generadas por scripts de python. Esas son algunas clases grandes que tienen métodos de utilidad con un comportamiento similar para todas las primitivas y objetos; nosotros solo ...

Recibí este error cuando intento depurar un programa de Java con vscode: java.lang.UnsupportedClassVersionError: test (versión de archivo de clase 52.65535) se compiló con características de vista previa que son ...

¿El kit de desarrollo de Java contiene la API JDBC en general? Descubrí con seguridad que el JDK 1.0.2 no contiene la API JDBC, por lo que la clase DriverManager generalmente no se encuentra en el virtual Java ...

Tengo un programa con GUI con segmento que puede ser grande y contener muchos objetos. Una de las características de mi programa es "cerrar" ese segmento y crear uno nuevo. Todo este segmento es ...