Средство запуска не возвращается к последней использованной активности в моем приложении - PullRequest
3 голосов
/ 18 января 2011

Я использую пользовательское приложение Launcher с виджетами, которые используются для запуска (и предоставления обновлений статуса) приложения.

Приложение состоит из нескольких операций - назовем их A, B и Cдля простоты.

A - запущенная активность.Пользователь переходит от A к B, а затем к C (ни в каком другом порядке).

В любое время пользователь может нажать кнопку «Домой» на пульте дистанционного управления и вернуться в приложение запуска.

Если пользователь затем нажимает кнопку «Назад» на пульте дистанционного управления, он всегда возвращается к тому действию, которое он в последний раз использовал (A, B или C).

Однако, если он нажимает наwidget (а не нажатие назад) Активность, которая выводится на передний план, кажется несовместимой!

Итак, вот пример того, что происходит

Из (пользовательского) средства запуска, используйте widget для запуска приложения
Появляется действие A
Пользователь нажимает кнопку, запускающую действие B
Появляется действие B
Пользователь нажимает «Домой»
Появляется средство запуска
Из (настраиваемого) средства запуска используйте виджет для запуска приложения
Упражнение A появляется НЕ B

Иногда я получаю Упражнение B вместо Упражнения A - но я не уверен, при каких обстоятельствах.Я хочу, чтобы отображало Активность наверху стека, а никогда - любую другую Активность (Активность B в приведенном выше примере).

У меня естьПрочитайте документацию Google о флагах активности («одиночная задача», «один экземпляр» и т. д.), но, похоже, ничего не помогло решить мою проблему.

В моем случае, Действия A, B, C имеет смысл только при запуске в таком порядке - и никогда не имеет смысла видеть предыдущее действие, если вы явно не вернетесь к нему.

Я не уверен, что проблема в том, как виджетзапускает приложение или есть что-то, что мне нужно указать в моем манифесте или что-то еще.

Есть идеи?

Спасибо,

Дан

Ответы [ 2 ]

0 голосов
/ 13 июня 2012

Извините, но это не ответ, а некоторая дополнительная информация, связанная с тем же вопросом.

Я нашел шаблон для действий при повторном запуске после нажатия кнопки home.

Смотрите мой вопрос для всех моих исследований:

Стек активности Android не работает, как указано в документации - последнее действие в стеке задач не отображается

Надеюсь, это поможет ...

Я читал, что предлагаемое исправление для этого странного поведения - использование класса "Диспетчер" в качестве Main, который будет запускать действие на основе состояния приложения ... или вы также можете отслеживать все открытые действия это нужно восстановить ... но это может стать очень громоздким, если у вас сложный дизайн пользовательского интерфейса.

0 голосов
/ 19 января 2011

Разве это не то, что должно произойти? Разве ваш виджет не запускает действие A? Вы ожидаете, что он запустит действие B, если вы попросите его запустить действие A?

(Хотя вы говорите, что иногда запускаете B. Не связано ли это с тем, что приложение вытесняется из памяти?)

...