Android: Как мне полностью удалить активность из стека активности? - PullRequest
2 голосов
/ 03 ноября 2011

У меня есть два вида деятельности FirstActivity и SecondActivity.

FirstActivity имеет фильтр намерений MAIN, LAUNCHER и DEFAULT. SecondActivity - это обычное действие, и в AndroidManifest не установлены другие флаги.

Мое приложение поддерживает C2DM, и при получении уведомления отображается значок на панели задач, а при нажатии открывается SecondActivity.

Прибытие уведомлений имеет два сценария: Во-первых, мое приложение уже запущено, когда пришло уведомление, а во-вторых, мое приложение полностью не запущено.

По первому сценарию все нормально. Получено уведомление, я щелкнул в раскрывающемся списке уведомлений, и отображается моя вторая активность. Когда я нажимаю обратно, SecondActivity завершает работу и приложение переходит в фоновый режим. Когда я снова запускаю свое приложение из Недавних приложений, оно отображает FirstActivity, которое является правильным, поскольку оно имеет значения MAIN, LAUNCHER и DEFAULT.

Во втором сценарии получено уведомление, я щелкнул его в раскрывающемся списке уведомлений, и отображается моя вторая активность. Когда я нажимаю обратно, SecondActivity завершает работу и приложение переходит в фоновый режим. Когда я снова запускаю свое приложение из последних Приложений, оно отображает SecondActivity, что неправильно. Я ожидаю, что FirstActivity будет отображаться, потому что это должен быть новый старт.

Я попробовал ForceKilling приложение после второго сценария, но результат тот же, мне нужно было перезагрузить телефон, чтобы снова запустить FirstActivity.

Вы, ребята, сталкивались с такой же проблемой? или это только у меня так? Что вы думаете не так с моей конфигурацией?

Я также попытался установить значение noHistory = false для SecondActivity, но результаты остались прежними.

Ответы [ 5 ]

1 голос
/ 04 ноября 2011

Это правильное поведение .. если вы запустите приложение через «Недавнее приложение», оно будет указывать с последнего действия. Попробуйте запустить его через обычный список приложений

1 голос
/ 04 ноября 2011

Когда вы запускаете приложение из ярлыка «Недавнее приложение», оно запускает последнее действие. Поэтому вы можете попробовать запустить приложение из списка приложений, посмотреть, решит ли оно вашу проблему.

0 голосов
/ 03 ноября 2011

Во втором сценарии я думаю, что стек активности пуст, поскольку приложение закрыто. так что теперь вы начинаете активность 2, это означает, что это единственная активность в стеке. Теперь желаемое поведение back может быть возможно путем переопределения onbackpress и запуска action1, если это его второй сценарий.

0 голосов
/ 03 ноября 2011

вы можете вызвать ваше второе занятие с флагом, для которого не задана история,

intent1.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

Это сработало для меня несколько раз.

Чтение из Android Doc

0 голосов
/ 03 ноября 2011

Для основного занятия попробуйте установить режим запуска как «singleInstance» в файле AndroidManifest.для второго действия установите для параметра «Завершение запуска задачи» значение true.

...