Comment mettre un timer sur android
Quelle est la bonne façon de mettre une minuterie sur android pour le coup d'envoi d'une tâche (une fonction que j'ai créer qui ne change pas l'INTERFACE)?
Utilisez ce Java façon:
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Timer.html
Ou il ya une meilleure façon d'android (android gestionnaire)?
Vous devez vous connecter pour publier un commentaire.
Java Standard de façon à utiliser des compteurs via java.util.Minuterie et java.util.TimerTask fonctionne très bien sous Android, mais vous devez être conscient que cette méthode crée un nouveau thread.
Vous pouvez envisager d'utiliser les très pratique Gestionnaire classe (android.os.Gestionnaire) et envoyer des messages via le gestionnaire
sendMessageAtTime(android.os.Message, long)
ousendMessageDelayed(android.os.Message, long)
. Une fois que vous recevez un message, vous pouvez exécuter les tâches désirées. La deuxième option serait de créer un Praticable objet et à le programmer via le Gestionnaire de fonctionspostAtTime(java.lang.Runnable, long)
oupostDelayed(java.lang.Runnable, long)
.oui java la minuterie de la peut être utilisé, mais que la question demande meilleure façon (pour le mobile). Ce qui est expliqué Ici.
Pour l'amour de StackOverflow:
Depuis Timer crée un nouveau thread, il peut être considéré comme lourd,
si vous avez besoin d'obtenir un appel de retour, tandis que l'activité est en cours d'exécution d'un Gestionnaire peut être utilisé en conjonction avec un
Praticable:
ou un Message
sur une note de côté cette approche peut être utilisée, si vous voulez exécuter un morceau de code dans le thread de l'INTERFACE utilisateur à partir d'un autre thread.
si vous avez besoin d'obtenir un appel de retour, même si votre activité n'est pas en cours d'exécution, vous pouvez utiliser un AlarmManager
android.os.Handler
, pasjava.util.logging
Que je l'ai vu, java.util.Minuterie est le plus utilisé pour la mise en œuvre d'une minuterie.
Pour une répétition de la tâche:
Pour une seule exécution d'une tâche:
tâche être la méthode à exécuter
après le temps d'exécution initiale
(intervalle le temps pour la répétition de l'exécution)
task
peut être une instance de votre classe qui hérite de java.util.TimerTask et remplacevoid run()
.J'espère que cela est utile et peut faire moins d'efforts pour mettre en œuvre,
Android CountDownTimer classe
par exemple
Probablement
Timerconcept
ou
Méthode 2 ::
Programme de la minuterie
Ajouter une nouvelle variable de type int nommé temps. Mettre à 0.
Ajoutez le code suivant à la fonction onCreate dans MainActivity.java.
Aller dans la méthode run et ajoutez le code suivant.
Il est de la situation.
Android documentation suggère que vous devriez utiliser AlarmManager à inscrire un but qui va se déclencher au moment spécifié si votre demande ne peut pas être en cours d'exécution.
Sinon, vous devez utiliser un Gestionnaire.
Notre 1ère Classe
Notre 2ème Classe
Je suis un Android newbie mais ici, c'est la classe timer, j'ai créé sur la base des réponses ci-dessus. Il fonctionne pour mon application, mais je souhaite la bienvenue à toutes les suggestions.
Exemple d'utilisation:
Je suis en utilisant un gestionnaire et praticable pour créer un timer. Je wrapper ce dans une classe abstraite. Juste tirer/la mettre en œuvre et vous êtes bon pour aller:
Noter que le
handler.postDelayed
est appelé avant l'exécution d'un code - ce qui va faire la minuterie plus fermé chronométré comme "prévu". Toutefois, dans les cas ont été le minuteur s'exécute fréquemment et la tâche (onTimer()
) est longue, il pourrait y avoir des recoupements. Si vous voulez commencer à compterintervalMS
après la tâche est terminée, déplacez leonTimer()
appeler une ligne au-dessus.Je crois que la façon de le faire sur android, c'est que vous avez besoin d'un service d'arrière-plan en cours d'exécution. Dans ce contexte de l'application, créer de la minuterie. Lorsque la minuterie de "tiques" (définition de l'intervalle de combien de temps vous voulez attendre), - le lancement de votre activité que vous souhaitez démarrer.
http://developer.android.com/guide/topics/fundamentals.html (<-- cet article explique la relation entre les activités, les services, les intentions et les autres principes fondamentaux de développement Android)
J'ai l'habitude d'utiliser (
Timer
,TimerTask
) ainsi queHandler
le coup d'envoi (de temps) tâches périodiquement. Maintenant, j'ai basculé l'ensemble de RxJava. RxJava fournitObservable.timer
qui est plus simple, moins sujettes à l'erreur, sans tracas à utiliser.Pour le calendrier de l'opération, vous devez utiliser Gestionnaire.
Si vous avez besoin d'exécuter un service d'arrière-plan de la AlarmManager est le chemin à parcourir.