Aproveitando o exemplo do post anterior, e fazendo umas alterações, temos um outro uso do Handler.
Desta vez para controlar um loop, usando o postDelayed.
Um uso para essa técnica é para fazer checagens de tempo em tempo em alguma condição.
Mostrando postagens com marcador Handler. Mostrar todas as postagens
Mostrando postagens com marcador Handler. Mostrar todas as postagens
sexta-feira, 7 de setembro de 2012
quarta-feira, 15 de agosto de 2012
Usando o Handler como Timer
Uns dos usos interessantes da classe Handler é para executar alguma tarefa depois de algum tempo.
No caso vai executar o método finish() depois de 30 segundos.
O uso mais comum dessa técnica é para fechar a activity de Splash e chamar a activity principal.
No caso vai executar o método finish() depois de 30 segundos.
O uso mais comum dessa técnica é para fechar a activity de Splash e chamar a activity principal.
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.
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.
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.
Assinar:
Comentários (Atom)