8

Jaka jest różnica między FragmentPagerAdapter a ViewPager z OffScreenLimit ustawiona na 1 i FragmentStatePagerAdapter?Różnica między FragmentPagerAdapter a ViewPager z OffScreenLimit ustawiona na 1 i FragmentStatePagerAdapter?

O FragmentPagerAdapter przewodnik Google mówi:

Ta wersja pager jest najlepszy do zastosowania, gdy istnieje garstka fragmentów zazwyczaj bardziej statycznych być wywoływana poprzez, na przykład jako zbiór zakładkach. Fragment każdej strony odwiedzanej przez użytkownika będzie przechowywany w pamięci , chociaż jej hierarchia widoków może zostać zniszczona, gdy nie będzie widoczna. Może to spowodować użycie znacznej ilości pamięci, ponieważ instancje fragmentu mogą utrzymać dowolną liczbę stanów. W przypadku większych zestawów stron należy rozważyć FragmentStatePagerAdapter.

I o FragmentStatePagerAdapter:

Ta wersja pager jest bardziej przydatna, gdy istnieje duża liczba stron, działa bardziej jak widoku listy. Gdy strony nie są widoczne dla użytkownika, cały jego fragment może zostać zniszczony, zachowując tylko stan tego fragmentu. Dzięki temu pager może utrzymywać znacznie mniejszą liczbę pamięci związaną z każdą odwiedzaną stroną w porównaniu do FragmentPagerAdapter kosztem potencjalnie większego obciążenia, gdy przełącza się między stronami.

Myślę, że jeśli ustawić offscreenlimit do 1, to zniszczyć wszystkie fragmenty poza nimi następnego bieżącego fragmentu, i zachowuje się podobnie do FragmentStatePagerAdapter. Czy to jest poprawne?

+0

Możliwy duplikat [Różnica między FragmentPagerAdapter i FragmentStatePagerAdapter] (https://stackoverflow.com/questions/18747975/difference- between-fragmentpageradapter-and-fragmentstatepageradapter) – Prince

Odpowiedz

11

Różnica jest dokładnie taka, jak zapisana w dokumentach. Ale może to być trochę mylące.

FragmentPagerAdapter posiada jego fragmentów w FragmentManager w odłączonym stanie, gdy nie są one widoczne (gdy są one w ciągu poza ekranem granicach dopuszczalnych) i FragmentStatePagerAdapter usuwa je z FragmentManager.

The offscreenPageLimit to coś innego. Wszystkie fragmenty w nim zawarte pozostają dołączone do interfejsu użytkownika. Po przejściu są one removed lub detached.

Widać to w źródłach FragmentPagerAdapter (linia 121) i FragmentStatePagerAdapter (linia 144)