7

После обновления с помощью поддерживающей библиотеки Android 23.1.1 последним 25.1.0 поведение от popBackStack() изменилось в нашем приложении.поведение popBackStack() отличается после обновления библиотеки поддержки с 23.1.1 до 25.1.0

Например, у меня есть три FragmentTransactions на BackStack. Теперь в BackStack добавляется четвертое FragmentTrsansaction. FragmentTransactions, как это:

FragmentTransaction transaction = fragmentManager.beginTransaction() 
    .replace(R.id.fragment_container_single, target, CoreActivity.FRAGMENT_TAG_LEFT) 
    .addToBackStack(<CONCRETE_TRANSACTION_NAME>) 
    .commit(); 

Фрагмент # 4 имеет логику, где он перенаправляет фрагмент # 5 во время onViewCreated() автоматически (я знаю, что это некрасиво, и я должен изменить это). В любом случае, когда я хочу оставить фрагмент № 5, я хочу вернуться к фрагменту, который был показан до фрагмента №4. Я делаю это имя транзакции:

getFragmentManager().popBackStack(“<CONCRETE_TRANSACTION_NAME_4>”, FragmentManager.POP_BACK_STACK_INCLUSIVE); 

или это:

getFragmentManager().popBackStack(“<CONCRETE_TRANSACTION_NAME_3>”, 0); 

Но с этим призывом onCreateView() и onViewCreated() фрагмента № 4 будет называться и Fragment # 5 будет немедленно добавлен в BackStack , Даже если я вернусь к фрагменту №1 onViewCreated() вызывается для каждого фрагмента на BackStack - для фрагмента № 2, фрагмента № 3 и фрагмента №4, даже если они не имеют значения для FragmentTransaction, к которому я хочу вернуться.

В библиотеке поддержки 23.1.1 Я успешно прыгаю в Фрагмент # 3. Фрагмент №4 включается без вызова onViewCreated(). Это казалось более интуитивным и правильным для меня, потому что вызов onViewCreated() для фрагментов «снаружи» моего FragmentTransaction кажется ненужным?

Я знаю, addToBackStack() сохраняет только транзакционные состояния, а не сами фрагменты, а фрагменты, возможно, нужно воссоздать.

С этим связано posts, но я хочу понять, почему он ломается после обновления библиотеки поддержки. Я ничего не могу найти. Был ли это ошибкой или теперь это ошибка?

Я собираюсь изменить свой код.

Спасибо за помощь!

ОБНОВЛЕНИЕ У меня есть проблемы с жизненным циклом/изменения после обновления до поддержки-библиотеки 25.1.0. Существует Google issue, где я дополнительно прокомментировал свои проблемы. В настоящее время мне пришлось вернуться к последнему 24.2.1 и следить за этой темой. Это только мое временное решение. Эти проблемы начинаются с support-library 25.0.0.

+0

У меня проблемы с обратной кнопкой в ​​этой версии. Интересно, связано ли это с этой проблемой жизненного цикла. Экземпляр активности снова создается. –

+0

Я проверил это. Когда я вернусь, моя деятельность не воссоздана. Он приостановлен и возобновлен, как и ожидалось между действиями. Но по спине очерки обломков изменились по порядку. Кажется, это не связано с новой версией библиотеки. Может быть, ваша деятельность воссоздана Android из-за низкой памяти? –

+0

Когда я пользуюсь поддержкой 25.x, у меня есть сбой после использования кнопки возврата. Когда я вернусь к 24.x, он работает хорошо. Несколько устройств. Когда у меня есть какое-то время, мне нужно отменить минимально жизнеспособный тест. –

ответ

6

Обратите внимание на новую опору 25.1.0.

Что-то изменилось в жизненном цикле .
Теперь есть новая функциональность, чтобы оптимизировать операции и отложить переход фрагмента.

Прочитайте это: https://code.google.com/p/android/issues/detail?id=230415

+0

Да, спасибо, я уже это узнал. Даже если я использую 'transaction.setAllowOptimization (false),' ничего не меняется и 'onCreateView()' все еще вызывается. Но вы думаете, что это эффект от новых оптимизаций, и мы, возможно, не можем переключиться на старое поведение? –

+0

Я думаю, что новый жизненный цикл изменяет трансакции и поведение в вашем случае. –

+0

Я тоже думаю, что это может быть новая оптимизация. Тем временем я оставил комментарий по проблеме Google, возможно, разработчик может сказать что-то конкретное об этом. Локально я тоже изменил свой код, так что 'onCreateView()' больше не вызывает снова FragmentTransaction. Я думаю, что другие люди также с этим связаны и надеются получить дополнительную информацию. –

0

Если бы подобный вопрос. Исправлено в 25.3.0

 Смежные вопросы

  • Нет связанных вопросов^_^