Android: Effiziente Bildschirm-Rotation-Handling
In Android, wenn die änderungen der Bildschirmausrichtung (zwischen quer-und hochformat) die onCreate
- Methode aufgerufen wird ,die, wenn Sie nicht richtig gehandhabt wird, wird neu der gesamte Aktivität, wenn das Ergebnis ist auch einfach das layout ändern und zu halten alle die gleichen Informationen.
Ich kenne ein paar Möglichkeiten, um dieses Problem zu lösen, aber ich interessiere mich für die effizienteste Art und Weise.
1) Sagen, die manifestieren, dass ich um die Orientierung zu ändern durch überschreiben der onConfigurationChanged()
Methode und verlassen es leer.
2) überschreiben onSaveInstanceState()
und speichern Sie die Daten hier werden die Daten in onCreate()
3) Überschreiben onPause()
wird ein bundle erstellen, die Daten und senden Sie es an onSaveInstanceState()
Offensichtlich, diese sind alle Optionen, aber welche ist die bessere Methode (kleine, mittlere, große Mengen von Daten)
Danke
- Eine Möglichkeit ist, können Sie aufhören die Neugestaltung der Tätigkeit und wechseln Sie einfach zwischen hoch-und Querformat-layout. Check meine Antwort here
- Während dieser Weg scheint zu funktionieren gut, ich will in der Lage sein, um die Verwendung der auto-Wechsel-layouts mithilfe der
res/layout-land
Ordner. Es sei denn natürlich es ist zu viel Aufwand für eine einfache Tätigkeit. - Nun, das wird automatisch geändert, das layout, Sie brauchen nur zu ändern der contentview in den code, das Wars.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einige Gerätekonfigurationen ändern können, während der Laufzeit (wie Ausrichtung des Bildschirms, der Tastatur Verfügbarkeit und Sprache). Wenn eine solche änderung Auftritt, Android-Neustarts der Laufenden Aktivität (
onDestroy()
genannt wird, gefolgt vononCreate()
).stellt den vorherigen Zustand durch die normale Aktivität-Lebenszyklus, in
die Android-Anrufe
onSaveInstanceState()
bevor es zerstört IhreAktivität, so dass Sie können speichern Daten über den Zustand der Anwendung. Sie
dann kann die Wiederherstellung des Zustandes während
onCreate()
oderonRestoreInstanceState()
.Jedoch, Sie könnte eine situation auftreten, in denen ein Neustart Ihrer Anwendung und Wiederherstellung, erhebliche Mengen von Daten kann teuer werden, und erstellen Sie eine schlechte user experience. In einer solchen situation haben Sie zwei Möglichkeiten:
Behalten Sie ein Objekt bei einer änderung der Konfiguration
Ermöglichen, Ihre Tätigkeit neu zu starten, wenn einem änderungen an der Konfiguration, sondern tragen eine stateful-Objekt der neuen Instanz Ihrer Tätigkeit.
Behandeln die Konfiguration selbst ändern
Verhindern, dass das system einen Neustart Ihrer Aktivität während bestimmter Konfigurationsänderungen, sondern erhalten einen Rückruf, wenn Sie die Konfigurationen nicht ändern, so dass Sie manuell aktualisieren Sie Ihre Tätigkeit als notwendig.
So, Wie pro Ihre Daten den Betrieb und die Küste von user-Erfahrungen mit der Anwendung können Sie wählen, was am besten für Sie..
EDIT: Wie pro Ihre Notwendigkeit ändern Sie einfach das layout, ich denke, Sie haben zu verwenden
onConfigurationChanged()
tun und die Veränderungen in der it.