quinta-feira, 9 de fevereiro de 2012

Thread, Handler, Runnable e ProgressDialog - Ex02


Neste outro teste vamos simular uma operação demorada e mostrar a evolução do processamento através de um ProgressDialog com uma barra indicadora de progresso.

Alguns detalhes da implementação:
  No onClick() do botão eu chamo o método ativaThread() que faz duas coisas: primeiro prepara o ProgressDialog e segundo prepara a thread e a starta.
  Na thread fazemos uma contagem de 0 a 100 e a cada iteração enviamos uma atualização da barra de progresso, como estamos em uma thread que não a UI Thread usamos o handler-runnable para isso.
  Quando a contagem chega a 100, mudamos o status para concluído e setamos o status da thread para interrupted. (Só para não ficar parado no sleep).
   No final, antes de sair da thread o ProgressDialog é fechado e enviamos uma breve mensagem via toast.

Seguem os códigos.







Vejam a app em execução:



Bons códigos!

PS: Alterei a variável total para volatile, pois ela é acessada por duas threads.



7 comentários:

  1. nao funciona
    o metodo run aparece duplicado

    ResponderExcluir
    Respostas
    1. Este comentário foi removido pelo autor.

      Excluir
    2. Funciona, sim! Além do método run da Thread, os outros dois são usados para serem executados na UI Thread via post da classe handler. Motivo: regra sagrada do Android nº 2.

      Excluir
  2. Olá tem como eu adicionar ProgressDialog Mostrando o insert do bd ?

    ResponderExcluir
    Respostas
    1. Sim. Basta colocar a rotina de inserção na thread ou numa AsynTask.

      Excluir
  3. Eu só nao entendo onde eu vou colocar por exemplo minha busca sql

    ResponderExcluir
    Respostas
    1. O local para se fazer alguma coisa é onde está o sleep.
      Ele está no exemplo apenas para "gastar" um tempo.

      Excluir