Wie benutze ich onResume ()?


86

Kann mir jemand ein Beispiel geben, das onResume()in Android verwendet wird?

Wenn ich die Aktivität am Ende der Ausführung einer anderen neu starten möchte, welche Methode wird ausgeführt - onCreate()oder onResume()?

Und wenn ich Daten aktualisieren möchte, wie füge ich sie ein? onResume()?


onResume () wird immer dann aufgerufen, wenn Sie von einem Anruf oder etwas anderem zur Aktivität zurückkehren. Sie können die onResume-Methode ähnlich wie onCreate () überschreiben und die Aufgabe ausführen.
Jibяaᴎ Khaᴎ

Dies kann Ihnen helfen, den Lebenszyklus und die Android-App besser zu verstehen.
TronicZomB

2
Die Reihenfolge, in der diese Methoden aufgerufen werden, wird in der Android-Entwicklerdokumentation erläutert: developer.android.com/reference/android/app/…
Michael

1
Stellen Sie sicher, dass Sie eine Antwort auswählen. Willkommen bei SO.
Donfede

Antworten:


129

Bei jeder neu gestarteten Aktivität wird zuerst die Methode onResume () ausgeführt.

Gehen Sie folgendermaßen vor, um diese Methode zu verwenden:

@Override
public void onResume(){
    super.onResume();
    // put your code here...

}

72

Beim Neustart der App wird aufgerufen OnCreate().

Wenn Sie die App fortsetzen, wenn sie angehalten ist, wird sie aufgerufen OnResume(). In den offiziellen Dokumenten unter https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle finden Sie hier ein Diagramm des Aktivitätslebenszyklus.

den Android-Aktivitätslebenszyklus von https://developer.android.com/images/activity_lifecycle.png unter https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle


1
Verwenden Sie den Hyperlink, um Links bereitzustellen.
Manoj Fegde

Der Link gibt mir manchmal prob. Ich weiß nicht warum
Viswanath Lekshmanan

2
Ich empfehle nicht, eine der Methoden, die Teil des Aktivitätslebenszyklus sind, manuell aufzurufen :), da dies viele Probleme verursachen kann.
Cata

1
@Cata, ich nahm an, dass Viswanath bedeutete, dass die Methoden aufgerufen werden, und ich habe die Antwort entsprechend aktualisiert.
Mathieu K.

28

Der beste Weg, dies zu verstehen, besteht darin, alle LifeCycle-Methoden in Ihrer Aktivität überschreiben zu lassen und einen Haltepunkt (wenn Sie den Emulator einchecken) oder ein Protokoll in jeder dieser Methoden zu platzieren. Sie erfahren, welcher wann angerufen wird.

Genau wie ein Spoiler onCreate()wird er zuerst aufgerufen, wenn Sie die Aktivität angehalten haben, indem Sie entweder zum Startbildschirm gegangen sind oder eine andere Aktivität gestartet haben onPause(). Wenn das Betriebssystem die Aktivität in der Zwischenzeit zerstört, onDestroy()wird es aufgerufen. Wenn Sie die App fortsetzen und die App bereits zerstört wurde, onCreate()wird sie angerufen oder sie onResume()wird angerufen.

Edit: Ich habe vergessen onStop(), es wird vorher aufgerufen onDestroy().

Wenn Sie die von mir erwähnte Übung machen, haben Sie ein besseres Verständnis.


1
Ich habe eine Weile nach einer so detaillierten Erklärung gesucht, dass mir wirklich geholfen hat, den perfekten App-Aktivitätszyklus zu erstellen. Vielen Dank.
Keno Clayton

du hast onStart () vergessen
Dory Daniel

9

Die meisten der vorherigen Antworten machen einen guten Job und erklären, wie, warum und wann sie verwendet werden sollen, onResume()aber ich möchte etwas über die Neuerstellung Ihrer hinzufügen Activity.

Ich möchte wissen, ob ich die Aktivität am Ende der Ausführung einer anderen Methode neu starten möchte, welche Methode onCreate () oder onResume () ausgeführt wird.

Die Antwort lautet onCreate(): Wenn Sie sich jedoch für eine Neuerstellung entscheiden, sollten Sie sich fragen, wie viel von den ActivityNeuerstellungen erforderlich ist. Wenn es Daten in einem Adapter, sagen für eine Liste, dann können Sie rufen notifyDataChanged()auf die adapterdie neu zu besiedeln adapterund nicht alles neu zu ziehen haben.

Auch, wenn Sie nur bestimmte aktualisieren müssen viewsaber nicht alle , dann kann es effizienter sein, rufen Sie invalidate()an dem view(n) , dass Bedarf aktualisiert. Dadurch werden nur diese neu gezeichnet, viewsund möglicherweise kann Ihre Anwendung reibungsloser ausgeführt werden. Ich hoffe das kann dir helfen.


5

onResume()ist eine der Methoden, die während des gesamten Aktivitätslebenszyklus aufgerufen werden . onResume()ist das Gegenstück, zu onPause()dem jedes Mal aufgerufen wird, wenn eine Aktivität nicht sichtbar ist, z. B. wenn Sie eine neue Aktivität starten, die sie verbirgt. onResume()wird aufgerufen, wenn die ausgeblendete Aktivität wieder auf dem Bildschirm angezeigt wird.

Ihre Frage fragt, mit welcher Methode eine Aktivität neu gestartet wird. onCreate()wird aufgerufen, wenn die Aktivität zum ersten Mal erstellt wird. In der Praxis bleiben die meisten Aktivitäten im Hintergrund durch eine Reihe von onPause()und onResume()Aufrufen bestehen. Eine Aktivität wird nur dann wirklich "neu gestartet", onRestart()wenn sie zuerst durch Aufrufen vollständig gestoppt onStop()und dann wieder zum Leben erweckt wird. Wenn Sie also nicht tatsächlich Aktivitäten onStop()damit beenden, werden Sie diese wahrscheinlich verwenden onResume().

Lesen Sie das Android-Dokument im obigen Link, um ein besseres Verständnis der Beziehung zwischen den verschiedenen Lifestyle-Methoden zu erhalten. Unabhängig davon, welche Lebenszyklusmethode Sie am Ende verwenden, ist das allgemeine Format dieselbe. Sie müssen die Standardmethode überschreiben und Ihren Code, dh was die Aktivität zu diesem Zeitpunkt tun soll, in den kommentierten Abschnitt aufnehmen.

@Override
public void onResume(){
 //will be executed onResume
}

Wird onResume () aufgerufen, wenn wir in der Ansicht auf ein Element klicken?
Rajiv_

1
Durch Klicken auf ein Element wird nicht unbedingt onResume aufgerufen. Die onResume-Methode wird aufgerufen, wenn diese Ansicht entweder ausgeblendet und wiederhergestellt ist oder beim ersten Laden, bevor sie vollständig erstellt wurde.
Rarw

show error hat nicht zu super.onResume ()
aufgerufen


2

KOTLIN

Bei jeder neu gestarteten Aktivität wird zuerst die Methode onResume () ausgeführt.

Gehen Sie folgendermaßen vor, um diese Methode zu verwenden:

override fun onResume() {
        super.onResume()
        // your code here
    }

1

Nach dem Start einer Aktivität wird ein Neustart (onRestart () vor onStart ()) oder eine Pause (onPause ()) bei onResume () durchgeführt. Wenn sich die Aktivität im Status von onResume () befindet, kann sie vom App-Benutzer verwendet werden.

Ich habe den Aktivitätslebenszyklus ein wenig untersucht und hier ist mein Verständnis dieses Themas: Wenn Sie die Aktivität (A) am Ende der Ausführung einer anderen Aktivität neu starten möchten, kann es verschiedene Fälle geben.

  1. Die andere Aktivität (B) wurde angehalten und / oder gestoppt oder zerstört, und die Aktivität A wurde möglicherweise angehalten (onPause ()). In diesem Fall ruft Aktivität A onResume () auf.

  2. Die Aktivität B wurde angehalten und / oder gestoppt oder zerstört, die Aktivität A wurde möglicherweise aufgrund eines Speichers gestoppt (onStop ()). In diesem Fall ruft Aktivität A zuerst onRestart (), dann onStart () und dann onResume auf ()

  3. Die Aktivität B wurde angehalten und / oder gestoppt oder zerstört, die Aktivität A wurde zerstört, der Programmierer kann onStart () manuell aufrufen, um die Aktivität zuerst zu starten, dann onResume (), da die Aktivität den Status "Zerstört" aufweist, wenn sich eine Aktivität im Status "Zerstört" befindet nicht gestartet, und dies geschieht, bevor die Aktivität vollständig entfernt wurde. Wenn die Aktivität entfernt wird, muss die Aktivität erneut erstellt werden. Manuelles Aufrufen von onStart () Ich denke, es liegt daran, dass onStart () nach onCreate () aufgerufen wird, wenn die Aktivität nicht gestartet und erstellt wird.

Wenn Sie Daten aktualisieren möchten, erstellen Sie eine Datenaktualisierungsfunktion und fügen Sie die Funktion in onResume () ein. Oder fügen Sie eine loadData-Funktion in onResume () ein.

Es ist besser, den Lebenszyklus mithilfe des Aktivitätslebenszyklusdiagramms zu verstehen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.