Android 1.5: AsyncTask Doinbackground () não chamado quando o método get () é chamado

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

  •  21-09-2019
  •  | 
  •  

Pergunta

Estou enfrentando um problema com a maneira como minhas assínctas são executadas. Aqui está o código do problema:

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

O que estou fazendo aqui é criar um novo objeto de assíncrogem, atribuí -lo ao FirstTask e depois executá -lo. Quero então disparar uma asyncTask separada quando o primeiro terminar e garantir que ele retorne um valor de sucesso (1 neste caso). Isso funciona perfeitamente no Android 2.0 ou mais. No entanto, estou testando com o Android 1.5 e os problemas começam a aparecer. O código acima será executado a primeira assíncada, mas doinbackground () nunca é chamada, apesar do onPreexecute () ser chamado. Se devo executar a primeira tarefa sem o método get (), doinbackground () é chamado e tudo funciona conforme o esperado. Exceto agora, não tenho uma maneira de determinar se a primeira tarefa foi concluída com êxito, para que eu possa dizer a segunda tarefa a ser executada. É seguro supor que este é um bug com o ASYNCTASK no Android 1.5? Especialmente porque a API (https://developer.android.com/reference/android/os/asynctask.html#get%28%29) diz que o método GET foi implementado desde a API 3. Existe alguma maneira de corrigir isso? Ou outra maneira de determinar que a primeira tarefa terminou?

Foi útil?

Solução

Se você vai bloquear (via get()), por que você está se incomodando AsyncTask em primeiro lugar? O todo ponto do AsyncTask é não bloquear.

Se você quiser ter SecondTask execute quando FirstTask está pronto, tenha FirstTask executar SecondTask dentro FirstTask's onPostExecute().

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top