Вопрос о другом фрагменте.
Для контекста:
- Одно приложение-активность с двумя фрагментами: «Домой» и «Настройки».
- Моя деятельность сразу добавляет «Домой», когда приложениеЗапускается.
- На этом экране пользователь может нажать значок настроек для просмотра фрагмента настроек.
Именно в этот момент я не уверен, стоит ли мне использовать #добавьте или # замените , чтобы показать мой фрагмент настроек.
Позвольте мне объяснить, почему.
- Заменить
Замена фрагмента довольно крутая.У этого есть хорошая анимация входа / выхода для обоих фрагментов.И вызываются методы жизненного цикла paused-> destroy в Home, позволяющие удалить любые наблюдаемые и освободить ссылки, которые больше не нужны, так как представление больше не отображается.
Однако, когда я нажимаю кнопку «Назад», чтобы открыть «Настройки», теперь «Домашняя страница» должна воссоздать себя.Так как происходит несколько вещей и несколько сложный список, я получу падение частоты кадров ниже 60 кадров в секунду для одного кадра (с помощью инструмента gpu profiling ).Некоторые телефоны могут питаться через это, но такие, как Nexus 5, не могут и имеют уродливый эффект перехода и задержку задержки (возможно, 500 мс-1 с) до того, как вид фактически выскочит после нажатия кнопки.
Добавить
Добавление фрагмента тоже довольно круто.У него нет проблем с частотой кадров при переходе назад.Так что на всех моих тестовых устройствах он выглядит красиво и гладко.
Однако на самом деле он не выходит из вида.Так что нет анимации выхода.События жизненного цикла для выпуска наблюдателей также не вызываются, поэтому он по-прежнему изменяет представление на изменения, которые он получает, даже если пользователь его не видит.
Итак, какое решение подходит для моего случая?Есть ли на это обычный ответ?Или есть что-то еще, что я должен делать?Должен ли я рефакторинг большого количества кода для оптимизации замены фрагмента?Или Дом может сидеть на заднем плане и слушать события?