Je développe une application Android 2.3.3 et je dois exécuter une méthode toutes les X secondes .
Sous iOS, j'ai NSTimer , mais sous Android, je ne sais pas quoi utiliser.
Quelqu'un m'a recommandé Handler ; un autre me recommande AlarmManager mais je ne sais pas quelle méthode convient le mieux à NSTimer .
Voici le code que je souhaite implémenter dans 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
];
J'ai besoin de quelque chose qui fonctionne comme NSTimer .
Que me recommandez-vous?
Réponses:
Cela dépend vraiment de l'intervalle dont vous avez besoin pour exécuter la fonction.
Si c'est => 10 minutes → j'irais avec Alarm Manager.
Et puis vous recevez ces émissions via un récepteur de diffusion. Notez que cela devra être enregistré ether dans le manifeste de votre application ou via la
context.registerReceiver(receiver,filter);
méthode. Pour plus d'informations sur les récepteurs de diffusion, veuillez vous référer à la documentation officielle. Récepteur de diffusion .Si c'est = <10minutes → j'irais avec un Handler.
la source
h.removeCallbacks(this);
, sinon vous devez maintenir une référence au runnable pour pouvoir le supprimer. Si la seconde est souhaitée, la méthode indiquée ici n'est peut-être pas votre meilleur itinéraire.Utilisez Timer pour chaque seconde ...
la source
Vous pouvez essayer ce code pour appeler le gestionnaire toutes les 15 secondes via onResume () et l'arrêter lorsque l'activité n'est pas visible, via onPause ().
la source
Si vous êtes familier avec RxJava, vous pouvez utiliser Observable.interval (), ce qui est assez sympa.
L'inconvénient est que vous devez l'architecte en interrogeant vos données d'une manière différente. Cependant, la méthode de programmation réactive présente de nombreux avantages:
Avec RxAndroid, vous pouvez gérer les threads en seulement 2 lignes de code.
Veuillez vérifier RxJava. Il a une courbe d'apprentissage élevée, mais cela rendra la gestion des appels asynchrones sous Android beaucoup plus facile et plus propre.
la source
Avec Kotlin, nous pouvons maintenant créer une fonction générique pour cela!
Et pour l'utiliser, il suffit de faire:
la source
la source
Ici, j'ai utilisé un thread dans onCreate () an Activity à plusieurs reprises, la minuterie ne permet pas tout dans certains cas Thread est la solution
En cas de besoin, il peut être arrêté par
la source
Voici peut-être une réponse utile à votre problème en utilisant Rx Java & Rx Android .
la source