A maneira Java padrão de usar temporizadores via java.util.Timer e java.util.TimerTask funciona bem no Android, mas você deve estar ciente de que esse método cria um novo encadeamento.
Você pode considerar usar a classe Handler, muito conveniente (android.os.Handler), e enviar mensagens para o manipulador por meio de sendMessageAtTime(android.os.Message, long)
ou sendMessageDelayed(android.os.Message, long)
. Depois de receber uma mensagem, você pode executar as tarefas desejadas. A segunda opção seria criar um objeto Runnable e agendá-lo através das funções do Handler postAtTime(java.lang.Runnable, long)
ou postDelayed(java.lang.Runnable, long)
.
sim, o timer do java pode ser usado , mas como a pergunta pede um caminho melhor (para celular). O que é explicado aqui .
Para o StackOverflow:
Como o Timer cria um novo segmento, ele pode ser considerado pesado,
se tudo o que você precisa é receber uma chamada de retorno enquanto a atividade está em execução, um Handler pode ser usado em conjunto com um
Executável :
ou uma mensagem
em uma observação lateral, essa abordagem pode ser usada, se você desejar executar um pedaço de código no thread da interface do usuário a partir de outro thread.
se você precisar receber uma chamada mesmo que sua atividade não esteja em execução, use um AlarmManager
fonte
Como eu já vi, java.util.Timer é o mais usado para implementar um timer.
Para uma tarefa repetida:
Para uma única execução de uma tarefa:
tarefa sendo o método a ser executado
após o tempo para a execução inicial
( intervalo para repetir a execução)
fonte
task
pode ser uma instância da sua classe que herda de java.util.TimerTask e substituivoid run()
.Espero que este seja útil e possa levar menos esforços para implementar a classe Android CountDownTimer
por exemplo
fonte
Provavelmente
Timerconcept
ou
Método 2 ::
Programe o temporizador
Adicione uma nova variável de int chamada time. Defina como 0. Adicione o seguinte código à função onCreate em MainActivity.java.
Vá para o método run e adicione o seguinte código.
fonte
É situacional.
A documentação do Android sugere que você use o AlarmManager para registrar um Intent que será acionado no horário especificado, se o aplicativo não estiver em execução.
Caso contrário, você deve usar o Handler.
fonte
Nossa 1ª Classe
Nossa 2ª classe
fonte
Sou iniciante no Android, mas aqui está a classe de timer que criei com base nas respostas acima. Funciona para o meu aplicativo, mas quaisquer sugestões são bem-vindas.
Exemplo de uso:
fonte
Estou usando um manipulador e executável para criar um timer. Eu envolvo isso em uma classe abstrata. Basta derivá-lo / implementá-lo e você estará pronto:
Observe que ele
handler.postDelayed
é chamado antes do código a ser executado - isso tornará o temporizador mais fechado com o tempo "esperado". No entanto, nos casos em que o cronômetro é executado com frequência e a tarefa (onTimer()
) é longa - pode haver sobreposições. Se você deseja começar a contarintervalMS
após a conclusão da tarefa, mova aonTimer()
chamada para uma linha acima.fonte
Acredito que a maneira de fazer isso no Android é que você precisa de um serviço em segundo plano para rodar. Nesse aplicativo em segundo plano, crie o cronômetro. Quando o cronômetro "marcar" (defina o intervalo de quanto tempo você deseja esperar), inicie sua atividade que deseja iniciar.
http://developer.android.com/guide/topics/fundamentals.html (<- este artigo explica a relação entre atividades, serviços, intenções e outros fundamentos fundamentais do desenvolvimento do Android)
fonte
Eu costumava usar (
Timer
,TimerTask
) e tambémHandler
iniciar tarefas (demoradas) periodicamente. Agora mudei o todo para o RxJava. O RxJava forneceObservable.timer
que é mais simples, menos propenso a erros e sem complicações.fonte
Para operação de temporização, você deve usar Handler .
Se você precisar executar um serviço em segundo plano, o AlarmManager é o caminho a seguir.
fonte
Neste exemplo, inicie a unidade do timer destruída no Kotlin
Cancelar a timertask em onDestroy ()
fonte