Я работаю с пользовательским интерфейсом, используя вкладки в панели действий. При переключении между вкладками я в настоящее время управляю событиями щелчка на вкладке в своей деятельности и вызываю присоединение и отсоединение по мере необходимости с помощью FragmentManager.
Каждый раз, когда прикрепляется фрагмент, я прохожу полный жизненный цикл, создаю новое представление и снова загружаю все свои данные. Я использую данный Bundle в onSaveInstanceState и onActivityCreated для обновления элементов графического интерфейса (в основном позиции прокрутки списка).
Это работает нормально, но имеет много накладных расходов. В моем случае в списке может быть около 300 записей, и при переключении между вкладками есть заметная задержка.
Чтобы ускорить работу, я теперь сохраняю корневое представление в onCreateView как переменную класса. Затем, когда onCreateView вызывается снова в результате прикрепления фрагмента, я проверяю ненулевое значение для моего корневого представления и возвращаю его вместо повторного раздувания представления. Это сохраненное представление все еще имеет соответствующий набор данных, и в этом случае я также обхожу загрузку данных. Конечно, мне все еще нужно полностью перестроить представление и данные, если фрагмент будет уничтожен ОС в фоновом режиме.
Мой вопрос в том, является ли это допустимым подходом? Я не вижу в этом недостатков, если только нет проблем с памятью, о которых нужно беспокоиться.