Galera, boa noite
Estou trabalhando num app que pede autorização para o usuário para iniciar uma série de downloads, que são necessários ao funcionamento da aplicação.
Os downloads são processados numa classe downloadTask que estende AsyncTask, e segundo a lógica de cancelar um download em andamento ou resumir ou download interrompido, criamos e depois executamos um downloadTask sempre que o usuário confirma que quer iniciar ou retomar o processo. Adicionalmente, para cada pacote a ser baixado, um novo downloadTask é criado, já que tivemos vários problemas eu reusar o mesmo objeto ao chamar o método start(). Criar um novo downloadTask foi a saída óbvia.
O problema é que penduramos no onClickListener do AlertDialog de confirmação o método startDownload, que cria uma nova classe de downloadTask. Segundo alguns reports de crash e stackTraces via Market, chegamos à conclusão que duas AsyncTasks estão sendo iniciadas ao mesmo tempo, pois dois cliques estão sendo capturados no botão do AlertDialog, o que gera comportamentos não-determinísticos indesejáveis e frequentemente capota o app.
Pesquisei e vi é é possível o evento de onClick acabar registrando dois cliques, dependendo da carga em execução no sistema Android e outros fatores, e uma solução eventual é recuperar a view BUTTON_POSITIVE dentro do DialogInterface e usar setClickable(false) antes de iniciar o download. Não conseguimos reproduzir esse comportamento em nossos testes, de modo que não conseguimos saber se isso resolve ou não o problema.
Alguém por acaso já passou por coisa parecida?
Grato pela força,
[]s
----------------------------------------------------------
Ubiratan Soares
Ubiratan Soares
(11) 8565-8455






0 comentários:
Postar um comentário