segunda-feira, 30 de abril de 2012

Executando tarefas sequencialmente em outra Thread no Android

 Este post exemplifica uma necessidade que às vezes ocorre em um projeto: executar uma série de tarefas sequencialmente em uma thread.
 Para fazer isso temos um recurso em Java que atende perfeitamente ao requisito acima: a estrutura Executor. Um executor é basicamente um gerenciador de threads e tarefas.
 O exemplo consiste em executar uma série de tarefas numa única thread que é controlada por um executor. A tarefa vai ser representada por uma classe que vai implementar um Runnable (MyTask). Para não ficar invisível vamos atualizar a tela com o Dialog.
 Vamos também usar uma outra thread para definir o Executor e submeter as tarefas para execução e aguardar até o fim de todas as tarefas para encerrar o Dialog ( MyControlThread).

 Os códigos:
 TesteExecutorsActivity.java


main.xml



Manifest file


PS: Algumas considerações sobre o código: No trecho abaixo, devemos observar o seguinte:
 a. O executor é definido com uma thread para podermos executar as tarefas sequencialmente uma a uma.
b. O loop for é para simular a submissão de "n" tarefas, normalmente teríamos diversas tarefas diferentes sendo submetidas da seguinte forma:
PS1: Nas tarefas, o Handler é utilizado para executar algum código na UI Thread, normalmente para alterar a tela.

 Executando no emulador:


6 comentários:

  1. Cara, muito legal o post! :)
    Parabéns!

    Abraço

    ResponderExcluir
  2. Parabéns pelo blog e a dedicação de seu tempo a ele... O post
    Thread, Handler, Runnable e ProgressDialog - Ex01, me ajudou com os estudos e testes de thread no android. Agora vou tentar implementar isso para atualizar uns bitmap de um listview...

    Até mais...

    ResponderExcluir
  3. Eu queria executar isso ao entrar no meu aplicativo sem ter que clicar em algum componente é possivél?

    ResponderExcluir
  4. Muito Obrigado por compartilhar! Realmente útil pra quem está começando.

    ResponderExcluir