Странное поведение кнопки Home - PullRequest
0 голосов
/ 23 января 2010

Я испытываю странное поведение моего приложения после жесткого нажатия кнопки «Домой». Когда вы нажимаете Home, все в порядке - мое приложение переходит в фоновый режим, показывая главный экран. Но если вы попытаетесь выбрать мое приложение в главном меню или в списке последних задач, оно будет вести себя так, как будто оно не было запущено ранее, и не отображает последнее действие, на котором вы были - оно просто начинается с нуля, а именно, показывает заставку и начинает следующую соответствующую деятельность. Более того, старые действия этого приложения остаются в стеке действий, а предыдущий экземпляр приложения не прекращается - поэтому, если вы несколько раз нажмете кнопку Назад, вы просто столкнетесь с теми действиями, которые, несомненно, были запущены во время предыдущего сеанса работы. с моим приложением. Активность на заставке фильтруется фильтром "android.intent.action.MAIN" и категорией "android.intent.category.LAUNCHER". Странно то, что все это происходит, несмотря на то, что я не перехватываю нажатия клавиш Back и не переопределяю методы onPause или onResume. То, что происходит, противоречит моему пониманию жизненного цикла приложения Android - я был уверен, что когда вы нажимаете Home, приложение просто уходит в фон, а когда вы выбираете его в меню позже - оно просто раскручивается и не запускается заново. (Конечно, если такие вещи не указаны в манифесте приложения или соответствующие методы не переопределены или что-то еще). Я также проверил это для некоторых других событий жизненного цикла - таких как изменение ориентации или выключение жесткой клавиатуры - и ни одно из них не привело к таким странным результатам. Похоже, проблема возникает при попытке запустить приложение из главного меню или меню последних приложений. Я надеюсь, что вы сможете мне помочь. Любой совет о том, на что обратить внимание или где искать решение, был бы очень полезен

С уважением, Алекс

1 Ответ

0 голосов
/ 23 января 2010

Вам необходимо установить android:launchMode="singleTask" в вашей активности LAUNCHER в файле манифеста.

Для получения дополнительной информации об атрибуте launchMode см. здесь

Обратите внимание, что:

Режим по умолчанию - «стандартный».

и

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...