Unterschied zwischen FragmentPagerAdapter mit ViewPager mit OffScreenLimit auf 1 und FragmentStatePagerAdapter?

8

Was ist der Unterschied zwischen FragmentPagerAdapter und ViewPager mit OffScreenLimit auf 1 und FragmentStatePagerAdapter ?

?

Über FragmentPagerAdapter Das Google-Handbuch sagt:

  

Diese Version des Pager ist am besten für den Einsatz, wenn es eine Handvoll davon gibt   typischerweise mehr statische Fragmente, die durchgeblättert werden sollen, z. B. eine Menge von   Registerkarten. Das Fragment jeder Seite, die der Benutzer besucht, wird beibehalten   Speicher, obwohl seine Ansichtshierarchie zerstört werden kann, wenn sie nicht sichtbar ist.   Dies kann dazu führen, dass eine signifikante Menge an Speicher seit dem Fragment verwendet wird   Instanzen können sich auf eine beliebige Menge an Zustand halten. Für größere Sets   der Seiten, betrachten Sie FragmentStatePagerAdapter.

Und über FragmentStatePagerAdapter :

  

Diese Version des Pagers ist nützlicher, wenn es eine große Zahl gibt   der Seiten funktioniert mehr wie eine Listenansicht. Wenn Seiten nicht sichtbar sind   der Benutzer kann ihr gesamtes Fragment zerstört werden, nur die behalten   gespeicherter Zustand dieses Fragments. Dies ermöglicht dem Pager, sich zu viel zu halten   weniger Speicherplatz im Zusammenhang mit jeder besuchten Seite   FragmentPagerAdapter auf Kosten von möglicherweise mehr Overhead wenn   Zwischen den Seiten wechseln.

Ich denke, wenn ich das Offscreenlimit auf 1 setze, würde es alle Fragmente außerhalb der beiden nächsten des aktuellen Fragments zerstören, und es verhält sich ähnlich wie ein FragmentStatePagerAdapter. Ist das korrekt?

    
dowjones123 14.05.2015, 10:45
quelle

1 Antwort

11

Der Unterschied ist genau so, wie er in Dokumenten geschrieben ist. Aber es kann ein wenig verwirrend sein.

FragmentPagerAdapter enthält seine Fragmente in FragmentManager im gelösten Zustand, während sie nicht sichtbar sind (während sie über den Grenzen des Offscreen liegen) und FragmentStatePagerAdapter entfernt sie aus FragmentManager .

Das offscreenPageLimit ist etwas anderes. Alle darin enthaltenen Fragmente bleiben mit der Benutzeroberfläche verknüpft. Sobald sie vorbei sind, werden sie entweder entfernt , oder losgelöst .

Sie können es in Quellen von FragmentPagerAdapter (Zeile 121) und FragmentStatePagerAdapter (Zeile 144)

    
simekadam 14.05.2015 11:06
quelle