Estou desenvolvendo um aplicativo Android 2.3.3 e preciso executar um método a cada X segundos .
No iOS tenho o NSTimer , mas no Android não sei o que usar.
Alguém me recomendou Handler ; outro me recomendou AlarmManager, mas não sei qual método se encaixa melhor com NSTimer .
Este é o código que desejo implementar no Android:
timer2 = [
NSTimer scheduledTimerWithTimeInterval:(1.0f/20.0f)
target:self
selector:@selector(loopTask)
userInfo:nil
repeats:YES
];
timer1 = [
NSTimer scheduledTimerWithTimeInterval:(1.0f/4.0f)
target:self
selector:@selector(isFree)
userInfo:nil
repeats:YES
];
Preciso de algo que funcione como NSTimer .
O que você me recomenda?
Respostas:
Isso realmente depende de quanto tempo você precisa para executar a função.
Se for => 10 minutos → eu iria com Alarm Manager.
E então você recebe essas transmissões via receptor de transmissão. Observe que isso precisará ser registrado ether em seu manifesto de aplicativo ou por meio do
context.registerReceiver(receiver,filter);
método. Para obter mais informações sobre Broadcast Receivers, consulte os documentos oficiais. Receptor de transmissão .Se for = <10 minutos → eu iria com um Handler.
fonte
h.removeCallbacks(this);
, caso contrário, você precisa manter uma referência ao executável para poder removê-lo. Se o segundo for desejado, o método postado aqui pode não ser seu melhor caminho.Use o cronômetro para cada segundo ...
fonte
Você pode tentar este código para chamar o manipulador a cada 15 segundos via onResume () e interrompê-lo quando a atividade não estiver visível, via onPause ().
fonte
Se você está familiarizado com o RxJava, pode usar Observable.interval (), que é muito legal.
A desvantagem disso é que você precisa arquitetar a pesquisa de seus dados de uma maneira diferente. No entanto, há muitos benefícios no modo de Programação Reativa:
Com RxAndroid, você pode lidar com threads em apenas 2 linhas de código.
Por favor, verifique RxJava. Ele tem uma alta curva de aprendizado, mas tornará o tratamento de chamadas assíncronas no Android muito mais fácil e limpo.
fonte
Com o Kotlin, agora podemos fazer uma função genérica para isso!
E para usar, basta fazer:
fonte
fonte
Aqui eu usei um thread em onCreate () uma Activity repetidamente, o timer não permite tudo em alguns casos Thread é a solução
Caso seja necessário, pode ser interrompido por
fonte
Esta pode ser uma resposta útil para o seu problema usando Rx Java e Rx Android .
fonte