Schneller Hintergrund
Wenn bestimmte wichtige Konfigurationsänderungen unter Android vorgenommen werden (ein häufiges Beispiel ist eine Änderung der Ausrichtung), startet Android die ausgeführte Aktivität standardmäßig vollständig neu, um sie an solche Änderungen anzupassen.
Wenn Sie android:configChanges="keyboardHidden|orientation"
in Ihrem AndroidManifest definieren , sagen Sie Android: "Bitte führen Sie den Standard-Reset nicht durch, wenn die Tastatur herausgezogen oder das Telefon gedreht wird. Ich möchte dies selbst erledigen. Ja, ich weiß, was ich tue." ""
Ist das eine gute Sache? Wir werden bald sehen ...
Keine Sorge?
Einer der Profis, mit denen Sie beginnen, ist, dass es Folgendes gibt:
Sie müssen sich keine Sorgen machen, dass Ihre Aktivität gedreht wurde
In vielen Fällen glauben Menschen fälschlicherweise, dass sie einen Fehler, der durch eine Orientierungsänderung ("Rotation") erzeugt wird, einfach durch Einfügen beheben können android:configChanges="keyboardHidden|orientation"
.
Android: configChanges = "keyboardHidden | Orientierung" ist jedoch nichts anderes als ein Pflaster. In Wahrheit gibt es viele Möglichkeiten, wie eine Konfigurationsänderung ausgelöst werden kann. Wenn der Benutzer beispielsweise eine neue Sprache auswählt (dh das Gebietsschema hat sich geändert), wird Ihre Aktivität auf die gleiche Weise neu gestartet wie durch eine Änderung der Ausrichtung. Wenn Sie möchten, können Sie eine Liste aller verschiedenen Arten von Konfigurationsänderungen anzeigen .
Bearbeiten : Noch wichtiger ist jedoch, dass, wie Hackbod in den Kommentaren hervorhebt , Ihre Aktivität auch neu gestartet wird, wenn sich Ihre App im Hintergrund befindet und Android beschließt, Speicherplatz freizugeben , indem es sie beendet. Wenn der Benutzer zu Ihrer App zurückkehrt, versucht Android, die Aktivität auf die gleiche Weise neu zu starten, wie dies bei einer anderen Konfigurationsänderung der Fall war. Wenn Sie damit nicht umgehen können, wird der Benutzer nicht glücklich sein ...
Mit anderen Worten, die Verwendung android:configChanges="keyboardHidden|orientation"
ist keine Lösung für Ihre "Sorgen". Der richtige Weg ist, Ihre Aktivitäten so zu codieren, dass sie mit jedem Neustart von Android zufrieden sind. Dies ist eine gute Vorgehensweise, die Ihnen später helfen wird. Gewöhnen Sie sich also daran.
Wann sollte ich es verwenden?
Wie Sie bereits erwähnt haben, gibt es einen deutlichen Vorteil. Das Überschreiben der Standardkonfigurationsänderung für eine Rotation durch selbstes Behandeln beschleunigt die Arbeit. Diese Geschwindigkeit ist jedoch mit einem Preis für Bequemlichkeit verbunden.
Um es einfach auszudrücken: Wenn Sie für Hoch- und Querformat dasselbe Layout verwenden, sind Sie durch Überschreiben in guter Verfassung. Anstelle eines vollständigen Neuladens der Aktivität werden die Ansichten einfach verschoben, um den verbleibenden Platz zu füllen.
Allerdings , wenn Sie aus irgendeinem Grunde ein anderes Layout verwenden , wenn das Gerät im Querformat ist die Tatsache , dass Android Ihre Aktivität neu geladen ist gut , weil es dann das richtige Layout laden. [Wenn Sie die Überschreibung für eine solche Aktivität verwenden und zur Laufzeit ein magisches Neulayout durchführen möchten ... nun, viel Glück - es ist alles andere als einfach]
Kurze Zusammenfassung
Wenn android:configChanges="keyboardHidden|orientation"
es für Sie richtig ist, verwenden Sie es auf jeden Fall . Aber BITTE sicher sein , zu testen , was passiert , wenn etwas ändert, da eine Orientierungsänderung nicht der einzige Weg ist , kann eine volle Aktivität Neustart ausgelöst werden.