Freigeben über


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 OnDestroyaus. 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 ListViewaufzufü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 OnStopentsorgt 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 OnResumegeschrieben 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.