|
Как избежать задвоения запуска Fragment-ов?
|
|||
---|---|---|---|
#18+
Добрый день. Есть стартовый фрагмент. И есть остальные фрагменты которые замещают этот стартовый фрагмент, добавляясь в стек возврата addToBackStack (). И в конце своей жизни спокойно возвращаясь к стартовому фрагменту. Но проблема возникает при стечении обстоятельств, когда запрос на запуск других фрагментов приходит почти одновременно. И кто-то из них запустится. Но сломается стек возврата. А причина этого в том, что транзакции менеджера фрагментов коммитятся не сразу и позднее чем несколько вызовов на показ фрагментов. developer.android.comSchedules a commit of this transaction. The commit does not happen immediately; it will be scheduled as work on the main thread to be done the next time that thread is ready. Как сказал бы П. П. Шариков:"В очередь, с..... дети!". Соответственно, не получается отследить из findFragmentByTag то, какой сейчас фрагмент запущен. Вопрос в том, как правильно разрулить такую ситуацию? Нужно, чтобы, кто последний, тот и добавлялся в стек, а предыдущие незавершенные коммиты, если они есть, убрать из очереди. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2014, 10:17 |
|
Как избежать задвоения запуска Fragment-ов?
|
|||
---|---|---|---|
#18+
vlad333Но проблема возникает при стечении обстоятельств, когда запрос на запуск других фрагментов приходит почти одновременно. Как этот эффект достигается? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2014, 10:43 |
|
Как избежать задвоения запуска Fragment-ов?
|
|||
---|---|---|---|
#18+
wadmanvlad333Но проблема возникает при стечении обстоятельств, когда запрос на запуск других фрагментов приходит почти одновременно. Как этот эффект достигается? Например событие из интерфейса слушателя событий по которому надо открыть определенный фрагмент и пользователь одновременно с этим перешел на фрагмент(не обязательно на тот же самый). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2014, 11:19 |
|
Как избежать задвоения запуска Fragment-ов?
|
|||
---|---|---|---|
#18+
vlad333wadmanпропущено... Как этот эффект достигается? Например событие из интерфейса слушателя событий по которому надо открыть определенный фрагмент и пользователь одновременно с этим перешел на фрагмент(не обязательно на тот же самый). ка кпример смотреть в фрагмент манагере, наличие такого фрагмента по тегу. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2014, 11:55 |
|
Как избежать задвоения запуска Fragment-ов?
|
|||
---|---|---|---|
#18+
Джибска кпример смотреть в фрагмент манагере, наличие такого фрагмента по тегу. выше я уже писал "Соответственно, не получается отследить из findFragmentByTag то, какой сейчас фрагмент запущен." Предыдущая транзакция где-то в очереди застряла и фрагмент еще не создался. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2014, 11:58 |
|
Как избежать задвоения запуска Fragment-ов?
|
|||
---|---|---|---|
#18+
vlad333wadmanпропущено... Как этот эффект достигается? Например событие из интерфейса слушателя событий по которому надо открыть определенный фрагмент и пользователь одновременно с этим перешел на фрагмент(не обязательно на тот же самый). То есть интерфейсу виднее, что делает пользователь? А если он в это время вводит информацию? Как-то неправильно менять фрагмент по событию без уведомления... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2014, 12:20 |
|
Как избежать задвоения запуска Fragment-ов?
|
|||
---|---|---|---|
#18+
Пользователь там точно ничего в это время не вводит, он наоборот ждет чего-то. И вот это чего-то определяется извне, и в зависимости от этого показывается нужный фрагмент. Если б пользователь что-то вводил и его труды могли бы потеряться, конечно интерфейс реагировал бы по-другому. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2014, 12:55 |
|
|
start [/forum/topic.php?fid=13&fpage=22&tid=1331528]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 258ms |
total: | 395ms |
0 / 0 |