Ich habe die Layout-Übung beendet und mich gefragt, warum sie den Aufruf von populateFields()
sowohl in onCreate
als auch in onResume
einschließen.
Laut Aktivitätslebenszyklus wird "onResume" immer vor der Aktivität ausgeführt gezeigt, warum nicht nur dort?
Ich habe echten Produktionscode, der Felder füllt und nur in onResume aufgerufen wird und es funktioniert gut. Ich dachte, ein Grund wäre, dass onResume aufgerufen wird, nachdem die Aktivität gezeigt wurde, aber ein wenig Googeln gräbt diesen (meist nicht verwandten) Thread: Ссылка
Quote: onResume () ist also das letzte, was passiert, bevor die Benutzeroberfläche angezeigt wird
Das sagt Dianne Hackborn, also können wir ihr wohl vertrauen:)
Tatsächlich habe ich Apps (in meiner App und auch anderen) gesehen, bei denen Felder nur in onCreate()
, aber nicht in onResume()
ausgefüllt wurden.
Rufen wir diese App 'A' an.
Der Effekt war, dass, als der Benutzer die Home-Taste drückte, zu einer anderen App ging und dann zu "A" zurückkehrte, der Bildschirm schwarz blieb, da "A" noch im Speicher war und das System sich nicht darum kümmerte rufe onCreate()
auf, ging aber direkt in onResume()
.
Also im Grunde würde ich sagen (und diese Sekunden, was @Torp schrieb) füllen Sie die Benutzeroberfläche in onResume()
und fertig.
Aber dann ist diese Antwort etwas außerhalb des Themas, da sie Ihre "Warum" -Frage nicht beantwortet.
Sie werden nicht in onResume eingefügt, da es jedes Mal aufgerufen wird, wenn die Aktivität angezeigt wird.
Sie möchten im Allgemeinen so wenige Objekte wie möglich erstellen, damit Sie sie in onCreate ein für allemal erstellen. Dann können Sie immer überprüfen, ob sie in onResume noch aktualisiert werden.
Tags und Links android