Xamarin.Android ListView und der Aktivitätslebenszyklus
Aktivitäten durchlaufen bestimmte Zustände, während Ihre Anwendung ausgeführt wird, z. B. Start, Ausführung, Angehalten und beendet werden. Weitere Informationen und spezifische Richtlinien zum Behandeln von Zustandsübergängen finden Sie im Tutorial zum Aktivitätslebenszyklus.
Es ist wichtig, den Aktivitätslebenszyklus zu verstehen und Ihren ListView
Code an den richtigen Speicherorten zu platzieren.
Alle Beispiele in diesem Dokument führen "Setuptasks" in der -Methode der Aktivität OnCreate
und (falls erforderlich) "Teardown" in OnDestroy
aus. In den Beispielen werden in der Regel kleine Datasets verwendet, die sich nicht ändern, sodass das erneute Laden der Daten häufiger erforderlich ist.
Wenn sich Ihre Daten jedoch häufig ändern oder viel Arbeitsspeicher verwenden, kann es sinnvoll sein, verschiedene Lebenszyklusmethoden zu verwenden, um Ihre ListView
aufzufüllen und zu aktualisieren. Wenn sich z. B. die zugrunde liegenden Daten ständig ändern (oder möglicherweise durch Aktualisierungen anderer Aktivitäten betroffen sind), wird der Adapter in OnStart
erstellt, oder OnResume
stellt sicher, dass die neuesten Daten jedes Mal angezeigt werden, wenn die Aktivität angezeigt wird.
Wenn der Adapter Ressourcen wie Arbeitsspeicher oder einen verwalteten Cursor verwendet, denken Sie daran, diese Ressourcen in der ergänzenden Methode an den Ort freizugeben, an dem sie instanziiert wurden (z. B. objekte, die in OnStart
erstellt wurden, können in OnStop
entsorgt werden).
Konfigurationsänderungen
Es ist wichtig, daran zu denken, dass Konfigurationsänderungen – insbesondere Bildschirmdrehung und Tastatursichtbarkeit – dazu führen können, dass die aktuelle Aktivität zerstört und neu erstellt wird (es sei denn, Sie geben mit dem ConfigurationChanges
Attribut etwas anderes an). Dies bedeutet, dass das Rotieren eines Geräts unter normalen Bedingungen dazu führt, dass ein ListView
und Adapter
neu erstellt wird und (sofern Sie keinen Code in OnPause
und OnResume
geschrieben haben) die Zustände der Bildlaufposition und Zeilenauswahl gehen verloren.
Das folgende Attribut würde verhindern, dass eine Aktivität aufgrund von Konfigurationsänderungen zerstört und neu erstellt wird:
[Activity(ConfigurationChanges="keyboardHidden|orientation")]
Die Aktivität sollte dann überschrieben OnConfigurationChanged
werden, um auf diese Änderungen angemessen zu reagieren. Weitere Informationen zum Behandeln von Konfigurationsänderungen finden Sie in der Dokumentation.