Die Standardmethode von Java zur Verwendung von Timern über java.util.Timer und java.util.TimerTask funktioniert in Android einwandfrei. Sie sollten sich jedoch bewusst sein, dass diese Methode einen neuen Thread erstellt.
Sie können die sehr praktische Handler- Klasse (android.os.Handler) verwenden und Nachrichten über sendMessageAtTime(android.os.Message, long)
oder an den Handler senden sendMessageDelayed(android.os.Message, long)
. Sobald Sie eine Nachricht erhalten haben, können Sie die gewünschten Aufgaben ausführen. Die zweite Möglichkeit wäre, ein ausführbares Objekt zu erstellen und es über die Handler-Funktionen postAtTime(java.lang.Runnable, long)
oder zu planen postDelayed(java.lang.Runnable, long)
.
ja javas timer kann verwendet werden , aber wie die frage nach einem besseren weg fragt (für mobile). Welche erklärt hier .
Für StackOverflow:
Da Timer einen neuen Thread erstellt, kann dieser als schwer angesehen werden.
Wenn Sie nur einen Rückruf benötigen, während die Aktivität ausgeführt wird, kann ein Handler in Verbindung mit a verwendet werden
Runnable :
oder eine Nachricht
Nebenbei bemerkt kann dieser Ansatz verwendet werden, wenn Sie einen Code im UI-Thread von einem anderen Thread ausführen möchten.
Wenn Sie einen Rückruf benötigen, auch wenn Ihre Aktivität nicht ausgeführt wird, können Sie einen AlarmManager verwenden
quelle
Wie ich gesehen habe, wird java.util.Timer am häufigsten zum Implementieren eines Timers verwendet.
Für eine sich wiederholende Aufgabe:
Für einen einzelnen Durchlauf einer Aufgabe:
Aufgabe ist die Methode, die
nach der Zeit bis zur ersten Ausführung ausgeführt werden soll
( Intervall die Zeit für die Wiederholung der Ausführung)
quelle
task
Möglicherweise handelt es sich um eine Instanz Ihrer Klasse, die von java.util.TimerTask erbt und überschreibtvoid run()
.Ich hoffe, dieser ist hilfreich und erfordert möglicherweise weniger Aufwand bei der Implementierung der Android CountDownTimer-Klasse
z.B
quelle
Wahrscheinlich
Timerconcept
oder
Methode 2 ::
Programmieren Sie den Timer
Fügen Sie eine neue Variable mit dem Namen int time hinzu. Setzen Sie es auf 0. Fügen Sie der Funktion onCreate in MainActivity.java den folgenden Code hinzu.
Gehen Sie in die Ausführungsmethode und fügen Sie den folgenden Code hinzu.
quelle
Es ist situativ.
In der Android-Dokumentation wird empfohlen , AlarmManager zu verwenden, um eine Absicht zu registrieren, die zum angegebenen Zeitpunkt ausgelöst wird , wenn Ihre Anwendung möglicherweise nicht ausgeführt wird.
Andernfalls sollten Sie Handler verwenden.
quelle
Unsere 1. Klasse
Unsere 2. Klasse
quelle
Ich bin ein Android-Neuling, aber hier ist die Timer-Klasse, die ich basierend auf den obigen Antworten erstellt habe. Es funktioniert für meine App, aber ich freue mich über Vorschläge.
Anwendungsbeispiel:
quelle
Ich verwende einen Handler und kann ausgeführt werden, um einen Timer zu erstellen. Ich verpacke dies in eine abstrakte Klasse. Leiten Sie es einfach ab / implementieren Sie es und Sie können loslegen:
Beachten Sie, dass der
handler.postDelayed
vor dem auszuführenden Code aufgerufen wird. Dadurch wird der Timer zeitlich geschlossener als erwartet. In Fällen, in denen der Timer zu häufig läuft und die Aufgabe (onTimer()
) lang ist, kann es zu Überlappungen kommen. Wenn SieintervalMS
nach Abschluss der Aufgabe mit dem Zählen beginnen möchten , verschieben Sie denonTimer()
Anruf um eine Zeile darüber.quelle
Ich glaube, der Weg, dies auf dem Android zu tun, ist, dass Sie einen Hintergrunddienst benötigen, um ausgeführt zu werden. Erstellen Sie in dieser Hintergrundanwendung den Timer. Wenn der Timer "tickt" (legen Sie das Intervall fest, wie lange Sie warten möchten), starten Sie Ihre Aktivität, die Sie starten möchten.
http://developer.android.com/guide/topics/fundamentals.html (<- In diesem Artikel wird die Beziehung zwischen Aktivitäten, Diensten, Absichten und anderen grundlegenden Grundlagen der Android-Entwicklung erläutert.)
quelle
Ich habe (
Timer
,TimerTask
) verwendetHandler
und (zeitaufwändige) Aufgaben regelmäßig gestartet. Jetzt habe ich das ganze auf RxJava umgestellt. RxJava bietetObservable.timer
eine einfachere, weniger fehleranfällige und problemlose Verwendung.quelle
Für den Timing-Betrieb sollten Sie Handler verwenden .
Wenn Sie einen Hintergrunddienst ausführen müssen, ist der AlarmManager der richtige Weg.
quelle
In diesem Beispiel wird die in Kotlin zerstörte Timer-Einheit gestartet
Brechen Sie die Zeitaufgabe in onDestroy () ab
quelle