Android 1.5: AsyncTask Doinbackground () não chamado quando o método get () é chamado
-
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?
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()
.