Ok, stworzyłem Fragment
z pewnym UI (para otaczaniem i rzeczy) i użyłem setRetainInstance
ponieważ Im prowadzenie AsyncTask
kwerendy serwera (wniosek można wysłać tylko raz) i muszę wynik AsyncTask
. Więc moje pytanie brzmi: Czy to źle, aby zachować cały fragment z interfejsem użytkownika? Widziałem kilka przykładów, gdzie ludzie używają dodatkowego Fragment
do korzystania z setRetainInstance
, ale .. czy coś jest nie w porządku, nie używając tego dodatkowego? Jeśli występuje problem z korzystaniem z setRetainInstance
, dlaczego tak się dzieje? Nie można znaleźć żadnych informacji w dokumentacji na ten temat.setRetainInstance fragment z UI Androida
Odpowiedz
Jeśli blokujesz orientację, powinieneś być w porządku. W przeciwnym razie może dojść do wycieku pamięci, jeśli zachowacie widgety powiązane z konkretną instancją działania.
Nawet jeśli użyjesz setRetainInstance(true)
, Twój Fragment będzie nadal odtwarzał swoje widoki po obróceniu (otrzymasz połączenie z onDestroyView
, a następnie onCreateView
). Tak długo jak nie zachowujesz odniesień do widoków po numerze onDestroyView
, nie będzie żadnych wycieków starej aktywności. Najlepszym podejściem byłoby jawne anulowanie odniesień w onDestroyView
, ale twój kod w onCreateView
z reguły nadpisze te odniesienia.
Istnieje wiele przykładów online (w tym niektóre oficjalne), w których ludzie używają oddzielnego fragmentu (bez widoku) do przechowywania danych. Zakładając, że to, co powiedziałem powyżej, jest poprawne, nie jest to konieczne (ze względu na zapobieganie wyciekom). W wielu przypadkach możesz skończyć się czystszym kodem/architekturą, jeśli użyjesz osobnego fragmentu, którego zadaniem jest tylko obsługa danych i nie martw się o interfejs użytkownika.
Możesz sprawdzić, czy wyciekasz konteksty aktywności po obróceniu o using Eclipse MAT.
- 1. Fragment Androida onCreateView z gestami
- 2. Fragment Androida onCreateView vs. onActivityCreated
- 3. Fragment Androida otrzymuje pusty kontener w onCreateView()
- 4. Fragment Androida getArguments() zwraca wartość null
- 5. Jak dodać Fragment Androida do mojej FragmentActivity?
- 6. Fragment Androida jest niszczony, ale otrzymuje OnActivityResult
- 7. Fragment Androida Transakcja z animacją powoduje biały błysk
- 8. Fragment Datepikera Androida - jak coś zrobić, gdy użytkownik ustawi datę?
- 9. Ui aktualizacji Androida od obsługi co sekundę
- 10. Jak debugować style UI na Androida
- 11. Fragment wywołania z fragmentu
- 12. setRetainInstance nie działa dla ListFragment przy użyciu biblioteki compatibiltiy
- 13. Zatrzymaj obiekt Fragment podczas obracania
- 14. Fragment android: fragment Nie można utworzyć wystąpienia fragment
- 15. getActionBar od Fragment z AppCompatLibrary
- 16. Jak oderwać fragment z backstack
- 17. Usuń fragment środkowy z FragmentStack
- 18. Jak usunąć fragment z FragmentPagerAdapter?
- 19. jak mogę dzielić rzeczy z Fragmentami z setRetainInstance (true) i dodawać je do backstack?
- 20. Istniejące testy Androida UI przestały działać po przejściu na AndroidaJUnitRunner
- 21. PHP & Hash/Fragment Fragment adresu URL
- 22. Zmień tło w bibliotece tabeli UI Androida (thiagolocatelli)
- 23. Narzędzie do testowania UI na Androida od ADT21
- 24. Fragment JAXB Fragment Marszałka bez przestrzeni nazw
- 25. Czy Android Studio obsługuje projekt AngularJS dla Androida UI?
- 26. Biblioteka Androida UI, która ma paski akcji, pulpity nawigacyjne itp.
- 27. Wykonywanie ciężkich obliczeń przy użyciu wątku UI Androida
- 28. Inflate układ z ImageButton wewnątrz Fragment programowo
- 29. Android 1.6 & Fragment & Tabhost
- 30. Android Fragment, wracając bez odtwarzania/ponownego ładowania Fragment
ale nie są to widżety powiązane z Fragmentem? może nie rozumiem, jak działają Fragmenty. – Raykud
Nawet jeśli orientacja jest zablokowana, może to być problematyczne. Android ponownie tworzy widok dla każdej zmiany konfiguracji. Natomiast zmiana konfiguracji może dotyczyć obracania wyświetlacza (zwykły przypadek), zmiany języka, dołączania/odłączania klawiatury i innych. Dbanie o obrót ekranu nie rozwiązuje całego problemu. – sstn