Angenommen, ich möchte alle 10 Sekunden eine Aktion ausführen und muss die Ansicht nicht unbedingt aktualisieren.
Die Frage ist: Ist es besser (ich meine effizienter und effektiver), Timer mit Zeitaufgabe wie hier zu verwenden:
final Handler handler = new Handler();
TimerTask timertask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
<some task>
}
});
}
};
timer = new Timer();
timer.schedule(timertask, 0, 15000);
}
oder nur ein Handler mit Nachverzögerung
final Handler handler = new Handler();
final Runnable r = new Runnable()
{
public void run()
{
<some task>
}
};
handler.postDelayed(r, 15000);
Ich wäre auch dankbar, wenn Sie erklären könnten, wann welcher Ansatz zu verwenden ist und warum einer von ihnen effizienter ist als der andere (wenn dies tatsächlich der Fall ist).
Antworten:
Handler
ist besser alsTimerTask
.Mit Java
TimerTask
und AndroidHandler
können Sie verzögerte und wiederholte Aufgaben in Hintergrund-Threads planen. In der Literatur wird jedoch überwiegend die Verwendung vonHandler
OverTimerTask
in Android empfohlen (siehe hier , hier , hier , hier , hier und hier ).Einige der gemeldeten Probleme mit TimerTask sind:
Beispiel
Die beste Quelle für alle Arten von Android-Beispielen, die ich gesehen habe, ist Codepath . Hier ist ein
Handler
Beispiel für eine sich wiederholende Aufgabe.verbunden
quelle
mHandler.removeCallbacks(runnableCode)
zum richtigen Zeitpunkt verwenden (z. B.onStop()
für eine Aktivität).Kopiert von:
TimerTask vs Thread.sleep vs Handler postDelayed - am genauesten, um die Funktion alle N Millisekunden aufzurufen?
quelle
Kotlin-Version der akzeptierten Antwort:
quelle