Udostępnij za pośrednictwem


Xamarin.Android ListView i cykl życia działania

Działania przechodzą przez niektóre stany, gdy aplikacja działa, na przykład uruchamianie, uruchamianie, wstrzymywanie i zatrzymywanie. Aby uzyskać więcej informacji i konkretnych wytycznych dotyczących obsługi przejść stanu, zobacz Samouczek cyklu życia działania. Ważne jest, aby zrozumieć cykl życia działania i umieścić ListView kod w odpowiednich lokalizacjach.

Wszystkie przykłady w tym dokumencie wykonują "zadania konfiguracyjne" w metodzie Działania OnCreate i (jeśli jest to wymagane) wykonaj "odrężenie" w pliku OnDestroy. W przykładach zazwyczaj używane są małe zestawy danych, które nie zmieniają się, dlatego ponowne ładowanie danych częściej jest niepotrzebne.

Jeśli jednak dane są często zmieniane lub zużywają dużo pamięci, warto użyć różnych metod cyklu życia w celu wypełnienia i odświeżenia elementu ListView. Jeśli na przykład dane bazowe stale się zmieniają (lub mogą mieć wpływ na aktualizacje innych działań), wówczas utworzenie karty w OnStart programie lub OnResume zapewni wyświetlenie najnowszych danych za każdym razem, gdy zostanie wyświetlone działanie.

Jeśli karta używa zasobów, takich jak pamięć lub kursor zarządzany, pamiętaj, aby zwolnić te zasoby w metodzie uzupełniającej, gdzie zostały utworzone (np. obiekty utworzone w OnStart programie mogą być usuwane w OnStopprogramie ).

Zmiany konfiguracji

Należy pamiętać, że zmiany konfiguracji — zwłaszcza rotacja ekranu i widoczność klawiatury — mogą spowodować zniszczenie i ponowne utworzenie bieżącego działania (chyba że określono inaczej za pomocą atrybutu ConfigurationChanges ). Oznacza to, że w normalnych warunkach obracanie urządzenia spowoduje ListView ponowne utworzenie elementu i Adapter (chyba że zapisano kod w OnPause systemach i OnResume) stan pozycji przewijania i zaznaczenia wiersza zostanie utracony.

Następujący atrybut uniemożliwiłby zniszczenie i ponowne utworzenie działania w wyniku zmian konfiguracji:

[Activity(ConfigurationChanges="keyboardHidden|orientation")]

Działanie powinno następnie zastąpić odpowiednie reagowanie OnConfigurationChanged na te zmiany. Aby uzyskać więcej informacji na temat obsługi zmian konfiguracji, zobacz dokumentację.