Ich entwickle eine Android 2.3.3-Anwendung und muss alle X Sekunden eine Methode ausführen .
In iOS habe ich NSTimer , aber in Android weiß ich nicht, was ich verwenden soll.
Jemand hat mir Handler empfohlen ; Ein anderer empfiehlt mir AlarmManager, aber ich weiß nicht, welche Methode besser zu NSTimer passt .
Dies ist der Code, den ich in Android implementieren möchte:
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
];
Ich brauche etwas, das wie NSTimer funktioniert .
Was empfehlen Sie mir?
Antworten:
Dies hängt wirklich davon ab, wie lange Sie voneinander entfernt sein müssen, um die Funktion auszuführen.
Wenn es => 10 Minuten ist → würde ich mit Alarm Manager gehen.
Und dann empfangen Sie diese Sendungen über den Rundfunkempfänger. Beachten Sie, dass dies in Ihrem Anwendungsmanifest oder über die
context.registerReceiver(receiver,filter);
Methode registriert werden muss. Weitere Informationen zu Rundfunkempfängern finden Sie in den offiziellen Dokumenten. Rundfunkempfänger .Wenn es = <10 Minuten → ist, würde ich mit einem Handler gehen.
quelle
h.removeCallbacks(this);
, andernfalls müssen Sie einen Verweis auf die ausführbare Datei pflegen, um sie entfernen zu können. Wenn die zweite gewünscht wird, ist die hier angegebene Methode möglicherweise nicht die beste Route.Verwenden Sie den Timer für jede Sekunde ...
quelle
Sie können diesen Code versuchen, um den Handler alle 15 Sekunden über onResume () aufzurufen und über onPause () zu stoppen, wenn die Aktivität nicht sichtbar ist.
quelle
Wenn Sie mit RxJava vertraut sind, können Sie Observable.interval () verwenden, was ziemlich ordentlich ist.
Der Nachteil dabei ist, dass Sie Ihre Daten auf andere Weise abfragen müssen. Die reaktive Programmierung bietet jedoch viele Vorteile:
Mit RxAndroid können Sie Threads in nur 2 Codezeilen verarbeiten.
Bitte überprüfen Sie RxJava. Es hat eine hohe Lernkurve, aber es wird die Bearbeitung von asynchronen Anrufen in Android so viel einfacher und sauberer machen.
quelle
Mit Kotlin können wir jetzt eine generische Funktion dafür erstellen!
Und um es zu benutzen, machen Sie einfach:
quelle
quelle
Hier habe ich einen Thread in onCreate () wiederholt, eine Aktivität, Timer erlaubt nicht alles in einigen Fällen Thread ist die Lösung
Falls es benötigt wird, kann es von gestoppt werden
quelle
Hier vielleicht hilfreiche Antwort für Ihr Problem mit Rx Java & Rx Android .
quelle