Pergunta

Existe alguma maneira de evitar que o método/thread doInBackground de um AsyncTask seja iniciado até que um AlertDialog exibido durante o método onPreExecute seja descartado?

doInBackground deve ser executado apenas quando onPreExecute for concluído, no entanto, até onde eu sei, ter um AlertDialog aberto não impede a conclusão de onPreExecute.

Detalhes:Estou no meu telefone no momento, então não posso fornecer um exemplo de código, mas a visão geral do código é que é um aplicativo que requer dados que só podem ser acessados ​​​​por meio de dados móveis por estar na rede de telecomunicações.O preExec do meu getData asynctask primeiro verifica se o wifi está ativo e, em caso afirmativo, exibe uma caixa de diálogo de alerta com as opções Desativar Wifi e Cancelar.

Cancelar deve encerrar a tarefa e Desativar Wifi deve, bem, desativar o wifi.O método doInBg verifica se a conexão de dados móveis está ativa e, se não, entra em um loop de suspensão até que esteja.Uma vez instalado, doInBg obtém os dados ...

Atualmente, se o wifi estiver ativado, o doInBg será iniciado antes que a caixa de diálogo seja encerrada, ficando preso no loop de suspensão até que algo faça com que a conexão móvel seja ativada...Isso leva a possíveis problemas que gostaria de evitar.

Foi útil?

Solução

Você pode tentar iniciá-lo em algum lugar para verificar se o seu wifi está ativo e, em seguida, usar AlertDialogListener para capturar a ação dos botões no AlertDIalog.então você pode iniciar seu Async dentro do AlertDialogListener.

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