quarta-feira, 8 de fevereiro de 2012

Thread, Handler, Runnable e ProgressDialog - Ex01

Neste teste vamos simular uma operação demorada com tempo indeterminado para terminar.
Como é uma operação demorada a regra número 1 nos diz para não bloquear a UI Thread, então vamos implementar uma thread para fazer o serviço.
Como não podemos alterar a tela diretamente (regra nº 2) vamos usar um handler e um runnable para atualizar a tela estando em outra thread que não a UI Thread.

Alguns detalhes da implementação:
  Eu extendo a classe Thread e no construtor eu informo um inteiro que é o número de loops que vou fazer para simular uma operação demorada (cada loop demora aproximadamente 1 segundo).
  No método fazerAlgoDemorado(), é o local onde faríamos uma consulta a um servidor, baixariamos um arquivo, ou uma sequência longa de cálculos.
  Antes de iniciar a thread é mostrado o ProgressDialog para informar ao usuário que o app vai iniciar uma operação longa. No final, antes de sair da thread o ProgressDialog é fechado e enviamos uma breve mensagem via toast. E como estamos em outra thread, fazemos isso via handler-runnable.

Seguem os códigos.







Olhem o programa em execução:



Bons códigos!


3 comentários:

  1. Boa tarde Gusukuma!

    Achei o blog através do portal android!
    Muito legais os seus posts! Parabéns!

    Gostaria de saber como você faz esses prints da tela?
    É pelo emulador ou no celular mesmo??

    ResponderExcluir
    Respostas
    1. Olá André
      Obrigado!

      No caso, é do emulador. Mas pode ser do celular também.
      Usei o Screen Capture da perspectiva DDMS do Eclipse.
      Está no canto superior esquerdo, é uma imagem de uma máquina fotográfica.
      Tenta aí, qualquer coisa pergunta.
      Abraço.

      Excluir
  2. Exemplo muito bom, simples e útil.

    ResponderExcluir