Подтвердить что ты не робот

Как кэшировать представление фрагмента

Я хотел бы кэшировать представление фрагмента. В моей активности есть вкладки с прокруткой, и каждая вкладка вызывает другой фрагмент. Но когда я сажусь между вкладками, переход кажется довольно медленным из-за разрушения вида фрагмента, который перестраивается во время операции салфетки. Кто-нибудь знает, как я могу кэшировать представление каждого фрагмента, чтобы предотвратить эту проблему? Я работаю с поддержкой библиотеки v4 и api 14

Я попытался реализовать конструктор для фрагментов, вызванный контейнером активности фрагментов: я вызываю конструктор, фрагменты создаются как переменные класса активности, а затем, когда фрагмент должен проявлять себя, активность класс возвращает объект фрагмента, который я создал ранее, но это не очень сильно улучшает мое приложение, потому что просмотр фрагмента уничтожен в любом случае

4b9b3361

Ответ 1

Это связано с тем, что по умолчанию пейджер по умолчанию загружает максимум 3 страницы (фрагменты): тот, который отображается, предыдущий и следующий, поэтому, если у вас есть 5 фрагментов, это произойдет при переходе от первого к последнему: (где x - загруженный фрагмент)

xx000 - > xxx00 - > 0xxx0 - > 00xxx - > 000xx

Попробуйте использовать

myPager.setOffscreenPageLimit(ITEMS_COUNT-1);

Это скажет пейджеру сохранить все их в памяти, а не уничтожать/создавать с каждым ударом (внимательно следить за управлением памятью)