Можно обновить фрагменты вместо создания новых экземпляров?

В примере при использовании фрагментов в документации Android, когда приложение находится в режиме «двойного просмотра», фрагмент сведений воссоздается всякий раз, когда приложению требуется показать сведения для другого заглавие. FragmentTransaction.replace () используется для замены каждого экземпляра старого фрагмента сведений новым.

Это рекомендуемая практика? Разве не расточительно создавать новый экземпляр пользовательского интерфейса, когда реальное намерение (без каламбура) состоит в том, чтобы обновить то, что показывает пользовательский интерфейс, а не сам пользовательский интерфейс. Мне кажется, что единственная причина для создания новых экземпляров - это если кто-то намеревается добавить их в backstack, чтобы пользователь мог повторить шаги. В противном случае, безопасно / целесообразно ли обновлять фрагмент напрямую?

В случае примера это будет означать метод, аналогичный DetailsFragment.setShownIndex () . Это будет вызвано путем передачи нового указателя заголовка вместо воссоздания DetailsFragment .

Предположим, у нас есть версия примера, в которой одно действие управляет обоими фрагментами, но показывает только по одному, заменяя каждый фрагмент по мере необходимости.Можно ли для действия создать экземпляр каждого фрагмента, сохранить ссылки на каждый, а затем просто добавить или удалить эти два экземпляра из себя по мере необходимости?

Одним из возможных последствий этого может быть то, что, когда фрагмент заголовка находится в возобновленном состоянии (то есть на «переднем плане»), выбор заголовка приведет к вызову DetailsFragment. setShownIndex () в то время, когда фрагмент сведений находится в остановленном состоянии.

Хорошая идея? Плохая идея?

Заранее спасибо.

11
задан Julian A. 30 January 2012 в 19:36
поделиться