Android 1.5: AsyncTask doInBackground () non chiamato quando metodo get () viene chiamato

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

  •  21-09-2019
  •  | 
  •  

Domanda

Sono in esecuzione in un problema con il modo in cui vengono eseguiti i miei asynctasks. Ecco il codice problema:

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

Quello che sto facendo qui è la creazione di un nuovo oggetto AsyncTask, assegnandolo alla firstTask e poi eseguirlo. Allora voglio sparare un AsyncTask separata quando il primo è fatto e fare in modo che restituisce un valore di successo (1 in questo caso). Questo funziona perfettamente su Android 2.0 e superiori. Tuttavia, sto testando con Android 1.5 e problemi iniziano a spuntare. Il codice di cui sopra verrà eseguito il primo AsyncTask ma doInBackground () non viene mai chiamato nonostante OnPreExecute () di essere chiamato. Se devo eseguire il primo compito senza il metodo get (), doInBackground () viene chiamato e tutto funziona come previsto. Solo che adesso non ho un modo per determinare se il primo compito completato con successo in modo che posso dire al secondo compito da eseguire. E 'lecito ritenere che si tratta di un bug con AsyncTask su Android 1.5? Soprattutto perché l'API ( https://developer.android .com / riferimento / android / os / AsyncTask.html # get% 28% 29 ) dice che il metodo gET è stato implementato dal API 3. C'è un modo per risolvere questo problema? O un altro modo per determinare che il primo compito è finito?

È stato utile?

Soluzione

Se avete intenzione di bloccare (via get()), perché ti dà fastidio con AsyncTask, in primo luogo? L'intero n di AsyncTask è di non bloccare.

Se si desidera avere SecondTask eseguire quando FirstTask è fatto, hanno FirstTask eseguire SecondTask in FirstTask di onPostExecute().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top