Android 1.5: AsyncTask doInBackground () no se llama cuando se llama al método get ()

StackOverflow https://stackoverflow.com/questions/2502874

  •  21-09-2019
  •  | 
  •  

Pregunta

Estoy corriendo en un problema con la forma en que mis asynctasks se ejecutan. Aquí está el código de problema:

firstTask = new background().new FirstTask(context);
if (firstTask.execute().get().toString().equals("1")) {
    secondTask = new background().new SecondTask(context);
}

Lo que estoy haciendo aquí es la creación de un nuevo objeto AsyncTask, asignándole a firstTask y luego ejecutarlo. entonces quiero disparar un AsyncTask separada cuando el primero está hecho y asegurándose de que se devuelve un valor de éxito (1 en este caso). Esto funciona perfectamente en Android 2.0 o superior. Sin embargo, estoy probando con Android 1.5 y los problemas comienzan a aparecer. El código anterior se ejecutará la primera AsyncTask pero doInBackground () no se llama nunca a pesar OnPreExecute () se llama. Si he de ejecutar la primera tarea sin el método get (), doInBackground () se llama y todo funciona como se esperaba. Sólo que ahora no tengo una manera de determinar si la primera tarea completada con éxito para que pueda decir la segunda tarea a ejecutar. Es seguro asumir que esto es un error con AsyncTask en Android 1.5? Especialmente desde la API ( https://developer.android .com / referencia / android / os / AsyncTask.html # get% 28% 29 ) dice que el método get se ha implementado desde el API 3. ¿Hay alguna forma de arreglar esto? Otra manera de determinar que la primera tarea ha terminado?

¿Fue útil?

Solución

Si va a bloquear (a través de get()), ¿por qué te molestas con AsyncTask en el primer lugar? El conjunto punto de AsyncTask es no bloquear.

Si usted quiere tener SecondTask ejecuta cuando se hace FirstTask, tiene FirstTask ejecutar SecondTask en FirstTask de onPostExecute().

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top