2016-04-21 2 views
1

Мое приложение имеет логическую иерархию активность следующим образом:Android: перемещаться по иерархии активность

Activity Hierarchy

Я стараюсь перемещаться по всей деятельности во время проверки, если они работают. Например:

Главное меню> Деятельность A1> Деятельность A2.

Теперь, если я вернусь в Главное меню, есть ли способ проверить, запущена ли операция А2, и если да, переходите непосредственно к этой операции?

Я думаю, что установка android:launchMode="singleTask" для деятельности A1 может сделать трюк и прочитать об атрибуте android:allowTaskReparenting. Но я точно не знаю, что использовать для достижения того, чего я хочу.

+0

Вы заинтересованы в принятии решений на основе истории навигации или, в частности, в переупорядочении заднего стека? –

+0

@MaximG История навигации на самом деле не является проблемой, если только одна или несколько Деяний в категории «A» не были созданы и не уничтожены - в этом случае мне нужно перейти в самую глубокую иерархию. – justbourv

+1

Вы проверили http : //developer.android.com/guide/components/tasks-and-back-stack.html? –

ответ

1

Было бы проще использовать одну активность хоста (в качестве навигационного контроллера) и многие фрагменты. Текущий фрагмент будет обратным вызовом для Activity, поэтому он примет решение о том, как перемещаться по вашему графику.

Если вы действительно хотите придерживаться графика со многими действиями, поведение по умолчанию - все действия в одном процессе будут живы. ОС Android может только очистить/убить процесс, а не действия (документация немного расплывчата об этом). Вы можете использовать Intent. FLAG_ACTIVITY_NO_HISTORY для средних действий, поэтому в стек будет только один root.

Есть способ исследовать задний стек с ActivityManager, но он устарел.

+0

В идеале я бы хотел запустить любую деятельность поверх конкретной задачи (созданной с помощью 'android: launchMode =" singleTask'). Насколько я понимаю, нет способа сделать это? Я переработаю все и сделаю фрагменты – justbourv