Ich habe eine Aktivität, die zu viele Benutzeroberflächensteuerelemente enthält. Ich möchte eine Methode ausführen, nachdem die Aktivität sichtbar gemacht wurde.
Ein Beispiel, das ich versucht habe:
%Vor%Aber im obigen Beispiel wird die Nachricht angezeigt, bevor die Aktivität sichtbar ist.
Gibt es eine Möglichkeit, herauszufinden, ob die Aktivität vollständig sichtbar ist?
Bewegen Sie Ihren Code zu onResume
Überprüfen Sie den Aktivitätslebenszyklus
%Vor%Wird nach onRestoreInstanceState (Bundle), onRestart () oder onPause () aufgerufen, damit Ihre Aktivität mit dem Benutzer interagiert. Dies ist ein guter Ort, um Animationen zu starten, exklusive Geräte (wie die Kamera) usw. zu öffnen.
Beachten Sie, dass onResume nicht der beste Indikator dafür ist, dass Ihre Aktivität für den Benutzer sichtbar ist. Ein Systemfenster wie die Tastensperre kann sich vorne befinden. Verwenden Sie onWindowFocusChanged (boolean), um sicher zu sein, dass Ihre Aktivität für den Benutzer sichtbar ist (z. B. um ein Spiel fortzusetzen).
Abgeleitete Klassen müssen die Implementierung dieser Methode durch die Superklasse aufrufen. Wenn dies nicht der Fall ist, wird eine Ausnahme ausgelöst.
Verschieben Sie den Code auf onResume
.
Das System ruft diese Methode jedes Mal auf, wenn Ihre Aktivität in den Vordergrund tritt, auch wenn sie zum ersten Mal erstellt wird. Details zu Aktivieren und Fortsetzen einer Aktivität
%Vor%Lesen Sie mehr unter Android-Aktivität Lebenszyklus - was sind all diese Methoden für?
rufen Sie MyMethod()
in onResume()
der Aktivität
Laut Dokumentation onResume()
Wird aufgerufen, wenn die Aktivität mit dem Benutzer interagiert. An diesem Punkt befindet sich Ihre Aktivität im oberen Bereich des Aktivitätsstapels, wobei Benutzereingaben vorgenommen werden.
Es gibt keinen echten Callback, der aufgerufen wird, genau zu diesem Zeitpunkt ist die Aktivität sichtbar. Aber wie Sie im angehängten Bild sehen können, wird die Methode onResume()
gerade aufgerufen, wenn Activity sichtbar sein soll.
Sehen Sie sich auch den Activity Lifecycle und die Dokumentation HIER
anAlso sollte Ihre Methode so heißen:
%Vor%Tags und Links android android-activity