Comment faire pour exécuter une méthode, toutes les X secondes
Je suis l'élaboration d'un Android 2.3.3 application et j'ai besoin d'exécuter une méthode, chaque X secondes.
Dans iOS, j'ai NSTimer, mais dans Android je ne sais pas quoi utiliser.
Quelqu'un a me recommander Gestionnaire; une autre me recommander AlarmManager mais je ne sais pas quelle méthode convient le mieux avec NSTimer.
C'est le code que je veux mettre en œuvre 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 de ce qui fonctionne comme NSTimer.
Que voulez-vous me recommander?
- Définir "le meilleur". De quelle manière voulez-vous être le meilleur?
- Je ne sais pas quelle méthode convient le mieux avec NSTimer.
- Combien de temps d'un intervalle de temps êtes-vous vouloir?
- J'ai mis à jour la question avec plus de détails à propos de ce que je suis en train de faire.
- Cette question: stackoverflow.com/questions/6242268/..., est semblable à celui-ci, et a une grande réponse.
Vous devez vous connecter pour publier un commentaire.
Cela dépend vraiment de combien de temps d'intervalle, vous devez exécuter la fonction.
Si c'est => 10 minutes → je voudrais aller avec Alarme Manager.
Et puis vous recevez ces émissions par le biais de récepteur de radiodiffusion. Notez que ce besoin d'être inscrit à l'éther dans votre manifeste de l'application ou via
context.registerReceiver(receiver,filter);
méthode Pour plus d'informations sur les Récepteurs de Radiodiffusion, veuillez consulter officiel Docs. Récepteur De Radiodiffusion.Si c'est =< 10minutes → je voudrais aller avec un Gestionnaire.
AlarmManager.INTERVAL_FIFTEEN_MINUTES
, j'ai réellement besoin d'être à seulement 1 MINUTE, comment puis-je le mettre ?h
après un état?h.removeCallbacks(this);
, le reste vous avez besoin pour maintenir une référence à l'exécutable pour être en mesure de le retirer. Si la seconde est souhaité la méthode posté ici pourrait ne pas être votre meilleur itinéraire.Action action = NameOfTheCallbackMethod; h.PostDelayed(action, 1000);
Utiliser la Minuterie pour chaque seconde...
Vous pouvez s'il vous plaît essayez ce code à l'appel du gestionnaire toutes les 15 secondes par onResume() et l'arrêter lorsque l'activité n'est pas visible, via onPause().
Si vous êtes familier avec RxJava, vous pouvez utiliser Observables.intervalle(), ce qui est assez propre.
L'inconvénient de cette est que vous avez de l'architecte de bureaux de vos données d'une manière différente. Cependant, il y a beaucoup d'avantages pour la Programmation Réactive façon:
Avec RxAndroid, vous pouvez gérer les threads en seulement 2 lignes de code.
S'il vous plaît vérifier RxJava. Il a une grande courbe d'apprentissage, mais il fera la manipulation des appels asynchrones dans Android de manière beaucoup plus facile et plus propre.
Ici, j'ai utilisé un fil dans onCreate() une Activité repeatly, la minuterie ne permet pas tout, dans certains cas, le Thread est la solution
En cas de besoin, il peut être arrêté par
Avec Kotlin, nous pouvons maintenant faire une fonction générique pour cette!
Et à utiliser, il suffit de faire: