Я использую пользовательское приложение Launcher с виджетами, которые используются для запуска (и предоставления обновлений статуса) для приложения.
Приложение состоит из нескольких Activity — для простоты назовем их A, B и C.
A — запущенная активность. Пользователь переходит от A к B, а затем к C (никогда в другом порядке).
В любой момент пользователь может нажать кнопку «Домой» на пульте дистанционного управления и вернуться в приложение запуска.
Если затем пользователь нажимает кнопку «Назад» на пульте дистанционного управления, он всегда возвращается к тому действию, которое использовал в последний раз (A, B или C).
Однако, если они нажимают на виджет (а не нажимают назад), действие, которое выводится на передний план, кажется непоследовательным!
Итак, вот пример того, что происходит
Из (пользовательской) программы запуска используйте виджет для запуска приложения
Отображается действие A
Пользователь нажимает кнопку, которая запускает действие B
Отображается действие B
Пользователь нажимает кнопку "Домой"
Открывается средство запуска
Из (пользовательской) программы запуска используйте виджет для запуска приложения
Отображается действие A, а НЕ B
Иногда я получаю действие B вместо действия A, но я не уверен, при каких обстоятельствах. Я хочу, чтобы действие отображалось вверху стека и никогда не отображалось никакое другое действие (действие B в приведенном выше примере).
Я прочитал документацию Google о флагах активности («одна задача», «один экземпляр» и т. д.), но, похоже, ничего не выскочило из решения моей проблемы.
В моем случае действия A, B, C имеют смысл только в том случае, если они выполняются в таком порядке, и никогда не имеет смысла просматривать предыдущее действие, если вы явно не вернетесь к нему.
Я не уверен, что проблема в том, как виджет запускает приложение, или мне нужно что-то указать в моем манифесте или что-то еще.
Есть идеи?
Спасибо,
Дэн