Очистка стека, включая действия в разных задачах - PullRequest
5 голосов
/ 22 декабря 2011

У меня есть основное действие A. Есть два сценария

1) A запускает B. B имеет режим запуска singleTask и запускается с FLAG_ACTIVITY_NEW_TASK.теперь у меня есть пункт меню в B, который выполняет операцию удаления и запускает действие A.

2) A запускает B, который запускает C, он также содержит пункт меню для выполнения операции удаления.

Я хочу, чтобы A запускался с очистки стека в обоих сценариях, но действия, относящиеся к другой задаче, все еще присутствующие там, я застрял, есть способ очистить стек.

Ответы [ 4 ]

1 голос
/ 02 января 2012

попробуйте использовать следующий код при удалении операций B и C

    Intent intent=new Intent(B.this, A.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
0 голосов
/ 04 января 2012

Мой метод не может достичь вашей цели A to be started with clearing the stack, но когда пользователь выбирает delet opereation и снова запускает B из A, задача, включающая A и B, будет сброшена.

Используйте флаг FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET, чтобы отметить, что задача будет понятна при необходимости, когда вы впервые запустите действие B из A, затем, если пользователь выберет пункт меню delet opereation из B или C, вы установите флаг, поэтому в следующий раз из A (A должен быть режим запуска single_task в манифесте), вы используете флаг FLAG_ACTIVITY_RESET_TASK_IF_NEEDED для запуска B. Этот флаг очистит B и всю верхнюю часть B.

Надеюсь, это поможет вам:)

0 голосов
/ 03 января 2012

Почему бы не завершить B и C перед повторным вызовом A?

finish();
0 голосов
/ 03 января 2012

Если я расскажу о вашем втором сценарии, то FLAG_ACTIVITY_TOP_CLEAR очистит стек ..

И ваш стек теперь будет A вместо A-B-C-A.

и во втором случае AFAIU ваша проблема, у вас есть только два действия A и B, поэтому если вы хотите перезапустить A, то после перезапуска A завершите вручную B.

Надеюсь, у тебя есть трюк.

Еще одна вещь, если у вас есть активность с launchmode=SingleTask, тогда вы можете использовать flag_activity_brought_to_front.

That will act like 

A-B-c до A

...