Comment setOffscreenPageLimit() améliorer ViewPager les performances en conservant plus hors des Fragments?

J'ai un ViewPager le contrôle de cinq Fragments. Quand je balayez à partir de Fragment à l'indice 1 à Fragment à l'indice 0, il y a une courte pause dans l'animation que j'aimerais éliminer.

Actuellement, je ne suis pas d'appel setOffscreenPageLimit(), donc je sais que Fragment 0 est actuellement en mémoire par le ViewPager alors que je suis sur Fragment 1 dans son état de veille, car l'écran hors tension à la limite de page par défaut est 1 (un de chaque côté de l'actuel Fragment).

Voici où ça devient confus. Si je l'appelle setOffscreenPageLimit(4) sur mon ViewPager, la pause dans le mouvement de balayage de 1 à 0 de l'animation est allé -- l'animation est fluide.

Donc, j'en conclus que, d'une certaine manière, en gardant Fragments 2 à 4 dans la mémoire améliore l'animation de Fragment 1 à Fragment 0.

Comment conserver Fragments 2-4 améliorer le balayage de l'animation de Fragment 1 à Fragment 0?

Modifier

J'ai couru TraceView, à l'aide de onPageScrollStateChanged(int state) pour déterminer quand commencer et arrêter la trace, comme suit:

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

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

Il semble que la ViewPager's méthodes d'accessibilité sont à l'origine du thread de l'INTERFACE utilisateur de figer. Quand je l'appelle setOffscreenPageLimit(4) sur le ViewPager, ces méthodes d'accessibilité sont en bas dans la trace -- prise négligeable de temps pour terminer.

Quelle est la cause de ce retard?

Comment setOffscreenPageLimit() améliorer ViewPager les performances en conservant plus hors des Fragments?

Utilisation Traceview et le savoir.
J'ai fait de la Musique app avec plusieurs onglets. Tous les onglets sont intégrés avec ViewPager. Maintenant, si je fais sa offScreenPageLimit pour NOMBRE D'ONGLETS. il fonctionne très bien mais quand il a également appelé méthode de reprise de l'INTERFACE et de devenir accrocher. Avez-vous une idée. Je suppose que ma question est liée à ce sujet, c'est pourquoi j'ai ajouter un commentaire ici.
Comme je l'ai écrit dans mon commentaire, utilisez Traceview et le savoir. Ou utiliser la journalisation et le savoir.
merci pour votre réponse. Permettez-moi de le vérifier. et si j'ai eu stuch en, s'il vous plaît m'aider... Merci encore une fois.
et iDoid Explorer - face même genre de problème - je suis en utilisant viewpager avec 5 pages, l'application fonctionne parfaitement avec la normale de balayage arrière et à l'avant, mais quand je l'utilise même pour le clavier sans fil de l'accessibilité, il obtient gèle à un certain point, j'ai essayé d'ajouter "setOffscreenPageLimit(les pages.la longueur);" il commence à naviguer sans congélation n'importe où. Maintenant, mon point est - problème est résolu mais que fait-il à résoudre? une idée?

OriginalL'auteur Matt Logan | 2014-01-24