Как кэшировать представление фрагмента
Я хотел бы кэшировать представление фрагмента. В моей активности есть вкладки с прокруткой, и каждая вкладка вызывает другой фрагмент. Но когда я сажусь между вкладками, переход кажется довольно медленным из-за разрушения вида фрагмента, который перестраивается во время операции салфетки. Кто-нибудь знает, как я могу кэшировать представление каждого фрагмента, чтобы предотвратить эту проблему?
Я работаю с поддержкой библиотеки v4 и api 14
Я попытался реализовать конструктор для фрагментов, вызванный контейнером активности фрагментов: я вызываю конструктор, фрагменты создаются как переменные класса активности, а затем, когда фрагмент должен проявлять себя, активность класс возвращает объект фрагмента, который я создал ранее, но это не очень сильно улучшает мое приложение, потому что просмотр фрагмента уничтожен в любом случае
Ответы
Ответ 1
Это связано с тем, что по умолчанию пейджер по умолчанию загружает максимум 3 страницы (фрагменты):
тот, который отображается, предыдущий и следующий, поэтому, если у вас есть 5 фрагментов, это произойдет при переходе от первого к последнему: (где x - загруженный фрагмент)
xx000
- > xxx00
- > 0xxx0
- > 00xxx
- > 000xx
Попробуйте использовать
myPager.setOffscreenPageLimit(ITEMS_COUNT-1);
Это скажет пейджеру сохранить все их в памяти, а не уничтожать/создавать с каждым ударом (внимательно следить за управлением памятью)