Size: a a a

Cicerone Chat (RUS)

2018 September 08

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
сделайте это и вероятно все будет ок. просто стараюсь помочь)
источник
2018 September 09

VN

Vitalii Nikonorov in Cicerone Chat (RUS)
предположительно с моей стороны было неточное следование документации, пропустил момент с установкой навигатора, а именно: Attention: Use onResumeFragments() with FragmentActivity (more info).
источник

VN

Vitalii Nikonorov in Cicerone Chat (RUS)
продолжу исследовать момент
источник
2018 September 10

VN

Vitalii Nikonorov in Cicerone Chat (RUS)
Всем привет. Есть пара вопросов по навигатору: для чего конкретно используется executePendingTransactions()  в методе applyCommands. В доке к executePendingTransactions написано (only from the main thread) - но не нашел перехода на главный поток, хотя методы navigateTo etc. могут быть вызваны из бекграунда. Учитывая что на каждую команду применяется executePendingTransactions - нельзя ли выполнять commitNow в таком случае, и/или собирать сложные команды в 1 транзацию?
источник

ES

Eugene Shapovalov in Cicerone Chat (RUS)
Konstantin Tskhovrebov
Смотрите. Один раз напишу, потом можно ссылаться на это сообщение 😉
вызов executePendingTransactions перед началом применения новых команд вызывается для того, что в этот момент могут быть выполнены не все транзакции, а нам надо выполнить бекТу какой-то экран.
чтобы быть уверенным, что такой есть и уже не участвует в транзакции.
после executePendingTransactions создается локальная копия состояния стека, и дальше любое количество команд преобразуется в транзакции без синхронных запусков (executePendingTransactions и popBackBtackImmediate) тем самым обеспечивая плавный UI. Раньше были проблемы со сменой корневого фрагмента и вообще концептуально теперь лучше (батчинг команд для сложных переходов)
прочитайте это сообщение
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
Vitalii Nikonorov
Всем привет. Есть пара вопросов по навигатору: для чего конкретно используется executePendingTransactions()  в методе applyCommands. В доке к executePendingTransactions написано (only from the main thread) - но не нашел перехода на главный поток, хотя методы navigateTo etc. могут быть вызваны из бекграунда. Учитывая что на каждую команду применяется executePendingTransactions - нельзя ли выполнять commitNow в таком случае, и/или собирать сложные команды в 1 транзацию?
НАДО собирать команды в транзакцию
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
именно для этого и есть роутер
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
а навигация ВСЕГДА должна быть на главном потоке
источник
2018 September 12

AP

Alexey Pushkarev in Cicerone Chat (RUS)
Ребят, а как правильно с диплинками работать? То есть допустим я нахожусь на экране А, мне нужно с него попасть на экран С так чтобы получилась
цепочка А -> B -> C.

Либо в будущем может понадобится открывать экран D, так чтобы была цепочка A -> B -> C -> D

То есть во фрагментменеджер надо добавить фрагменты посередине. Несколько раз вызывать navigateTo у роутера выглядит неправильно, роутер сам должен знать  как открыть конечный экран. Либо в навигаторе, когда пришла команда на переход на экран С проверять бэкстек фрагмент менеджера на наличие B и если его нет, то добавить туда транзакцию на B,  а потом на С. Это решение мне кажется самым подходящим на данный момент.
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
Alexey Pushkarev
Ребят, а как правильно с диплинками работать? То есть допустим я нахожусь на экране А, мне нужно с него попасть на экран С так чтобы получилась
цепочка А -> B -> C.

Либо в будущем может понадобится открывать экран D, так чтобы была цепочка A -> B -> C -> D

То есть во фрагментменеджер надо добавить фрагменты посередине. Несколько раз вызывать navigateTo у роутера выглядит неправильно, роутер сам должен знать  как открыть конечный экран. Либо в навигаторе, когда пришла команда на переход на экран С проверять бэкстек фрагмент менеджера на наличие B и если его нет, то добавить туда транзакцию на B,  а потом на С. Это решение мне кажется самым подходящим на данный момент.
В роутере делаете метод, который в одном батче отправляет сразу несколько команд форвард
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
И будет всё правильно
источник

AP

Alexey Pushkarev in Cicerone Chat (RUS)
Ну тогда придется для каждой такой цепочки батча делать
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
Это уже от вас зависит. Я сказал как правильно
источник

KL

Kirill L in Cicerone Chat (RUS)
Alexey Pushkarev
Ну тогда придется для каждой такой цепочки батча делать
Так сделай метод который на вход получает список пар screen/arg и баьчит разом команды navigateTo из них
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
Kirill L
Так сделай метод который на вход получает список пар screen/arg и баьчит разом команды navigateTo из них
Вот человек все правильно понял 👍
источник

ES

Eugene Shapovalov in Cicerone Chat (RUS)
Alexey Pushkarev
Ну тогда придется для каждой такой цепочки батча делать
Такое решение сработает, если в цепи все экраны являются фрагментами в рамках одного активити.
источник

AP

Alexey Pushkarev in Cicerone Chat (RUS)
Eugene Shapovalov
Такое решение сработает, если в цепи все экраны являются фрагментами в рамках одного активити.
Ну да, приложение на фрагментах с 1 активити
источник
2018 September 14

AT

Andrey Timofeev in Cicerone Chat (RUS)
А как решается вызов startActiviryForResult?
источник

ВБ

Влад Баженов in Cicerone Chat (RUS)
Andrey Timofeev
А как решается вызов startActiviryForResult?
подозреваю что ответ "никак, это не задача навигации"
источник

AT

Andrey Timofeev in Cicerone Chat (RUS)
Влад Баженов
подозреваю что ответ "никак, это не задача навигации"
Тогда и startActivity это не навигация?
источник