Eu tenho um ViewPager conectado a um FragmentPagerAdapter que exibe três fragmentos. O ViewPager parece destruir a exibição de um fragmento hospedado quando há mais de um deslize da posição atual.
Essas visualizações são todas listas simples e essa otimização é completamente desnecessária, então eu gostaria de desativá-la. Isso está causando alguns problemas visuais porque as listas têm animações de layout aplicadas a elas e essas animações são reproduzidas após serem destruídas e recriadas. Ele também mostra a animação de introdução da barra de rolagem a cada vez (onde a barra de rolagem é brevemente visível para indicar que é possível rolá-la), o que pode ser uma distração e a posição de rolagem atual do usuário é perdida no processo.
Ele também não carrega o terceiro fragmento até que o primeiro furto ocorra, o que é problemático porque cada fragmento lida com suas próprias chamadas de serviço e eu preferiria que os três disparassem ao mesmo tempo quando a atividade carrega. O atraso da terceira chamada de serviço é inferior ao ideal.
Existe alguma maneira de convencer o ViewPager a interromper esse comportamento e apenas manter todos os meus fragmentos na memória?
Por padrão, o ViewPager recria os fragmentos quando você desliza a página. Para evitar isso, você pode tentar uma de duas coisas:
1. No onCreate () de seus fragmentos, chame setRetainInstance (true).
2. Se o número de fragmentos for fixo e relativamente pequeno, adicione onCreate () no código a seguir:
Se bem me lembro, a segunda opção é mais promissora. Mas peço que tente os dois e veja qual deles funciona.
fonte
"Defina o número de páginas que devem ser mantidas nos dois lados da página atual na hierarquia de exibição em um estado inativo. As páginas além desse limite serão recriadas a partir do adaptador quando necessário."
http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int)
fonte