2011-01-18 3 views
3

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

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

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

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

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

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

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

Из (настраиваемого) пусковой установки, использования виджета запуска приложений
Activity A появляется
пользователь нажимает кнопку, которая запускает активность B
активность B появляется
пользователь нажимает 'Home'
Launcher появляется
Из (настраиваемого) пусковой установки, использования виджета запуска приложений
Activity A появляется НЕ B

Иногда я получаю Activity B вместо Activity A, но я не уверен, при каких обстоятельствах. I хочу, чтобы получить активность в верхней части стека, которая будет отображаться, и never любая другая деятельность (операция B в приведенном выше примере).

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

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

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

Любые идеи?

Спасибо,

Dan

ответ

0

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

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

+0

Спасибо за ответ. Тревожное дело - кажущаяся случайность, с которой Activity отображается после возвращения в приложение. Документы не очень ясны в отношении того, как это должно работать. Я прочитал, что действия в задаче никогда не переупорядочиваются (если вы специально не запрашиваете это), и что запуск приложения с флагом Intent FLAG_ACTIVITY_NEW_TASK должен либо начать новую задачу, либо если эта операция уже запущена, перенести эту задачу на передний план (см. http://developer.android.com/reference/android/content)/Intent.html#FLAG_ACTIVITY_NEW_TASK). – Dan

+0

Кроме того - для решения проблемы нехватки памяти - я не верю, что это так, потому что я вижу, что с помощью logcat все действия выполняются. – Dan

0

Мне очень жаль, но это не ответ, а некоторые дополнительную информацию по этому же вопросу.

Я нашел шаблон для деятельности, когда перезапускается после нажатия кнопки дома.

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

Android Activity Stack is not working as stated in the docs - last activity in task stack not shown

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

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

Смежные вопросы