W jaki sposób setOffscreenPageLimit () poprawia wydajność ViewPager, zachowując więcej fragmentów poza ekranem?

mamViewPager kontrolowanie pięciuFragments. Kiedy machnę odFragment w indeksie 1 doFragment przy indeksie 0,jest krótka przerwa w animacji które chciałbym wyeliminować.

Obecnie nie dzwonięsetOffscreenPageLimit(), więc to wiemFragment 0 jest przechowywane w pamięci przezViewPager kiedy jestem naFragment 1 w stanie bezczynności, ponieważ limit strony poza ekranem domyślnie wynosi 1 (jeden po obu stronach prądu)Fragment).

Oto, gdzie staje się mylące. Jeśli zadzwonięsetOffscreenPageLimit(4) na moimViewPager, przerwa w animacji od 1 do 0 zniknęła - animacja jest płynna.

Dlatego dochodzę do wniosku, że tak się trzymamFragments 2-4 w pamięci poprawia animację zFragment 1 doFragment 0.

Jak zachowaćFragments 2-4 poprawić animację przesuwania zFragment 1 doFragment 0?

Edytować

Uruchomiłem TraceView, używająconPageScrollStateChanged(int state) określić, kiedy rozpocząć i zatrzymać śledzenie, w następujący sposób:

@Override
public void onPageScrollStateChanged(int state) {
    if (state == 1 && mViewPager.getCurrentItem() == 1) {
        Debug.startMethodTracing("ViewPagerTesting", 100000000);
    }

    if (state == 0 && mViewPager.getCurrentItem() == 0) {
        Debug.stopMethodTracing();
    }
}

Wygląda na to, żeViewPagermetody dostępności powodują zamrożenie wątku interfejsu użytkownika. Kiedy dzwonięsetOffscreenPageLimit(4) w ViewPager te metody ułatwień dostępu znajdują się na samym dole śladu - nie ma czasu na ukończenie.

Co powoduje opóźnienie?

questionAnswers(1)

yourAnswerToTheQuestion