Wie geht man mit Android Aktivität Lifecycle auf wake up (Alarm app)
-
27-09-2019 - |
Frage
Ich bin ein paar Probleme mit einem Alarm app I mit der Entwicklung bin.
Das erste, was ich denke, ein bisschen komisch ist, dass, wenn ein Alarm geht aus und weckt den Hörer auf. Diese Dinge passieren.
oncreate
onResume
OnPause
onResume
Warum sind sie in dieser Reihenfolge laufen? Die letzten beiden sollte nicht genannt werden? Und das ist, was macht mir große Schwierigkeiten, denn wenn ich zu Hause drücken oder wieder am Telefon, onPause ausgeführt wird, was ich will (Ziel nennen) aus. Und das Teil funktioniert, wie es sollte, aber das funktioniert nicht, wenn das Telefon weckt upp aus dem Schlaf bacause des onPause Anruf ...
Irgendwelche Ideen?
Lösung
Ich würde vorschlagen, Sie schauen, wie die offizielle Alarmanwendung die Ereignisse behandelt: https://android.googlesource.com/platform/packages/apps/DeskClock
Andere Tipps
Ich habe auch ein ähnliches Problem: ich eine Aktivität erstellen und einen Service im Hintergrund. Wenn der Dienst einige Daten aus dem Netz empfangen wird, die Aktivität Bring-up. Alles funktioniert gut, bis die Aktivität in der OnStop Phase und der Bildschirm schwarz. Wenn ich diese Situation haben, und ich fordere die Aktivität Neustart, ich habe:
onRestart am Start auf Wiederaufnahme onPause onNewIntent onResume
Wie Sie sehen, ich habe eine onResume, onPause und andere onResume und die Aktivität kam an den Benutzer.
Es scheint, dass, weil wir eine singleTop oder SingleInstance Aktivität (vielleicht auch auf singleTask erscheinen) verwenden. Das Problem ist, dass, wenn Sie eine Absicht zu einer bereits erstellten singleTop Aktivität, Ihr neuer Vorsatz aktiv die onNewIntent () -Methode senden.
: von der API können Sie sehen, dassEine Aktivität wird immer angehalten werden bevor Sie eine neue Absicht empfängt, so dass Sie zählen auf onResume () aufgerufen können wird nach dieser Methode.
so vielleicht ist das, warum Sie onResume-onPause-onResume Anrufe empfangen.
Dies ist jedoch ein seltsames Verhalten!
Wollen Sie wirklich finish () in onPause () aufzurufen? onPause () wird aufgerufen, wenn die momentane Aktivität nicht mehr im Vordergrund steht. Vielleicht möchten Sie stattdessen finish () in Ihrem OnStop () -Methode aufrufen. Sehen Sie sich die Activity lifecycle
.