2010-01-23 5 views
0

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

С уважением, Alex

ответ

0

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

Для получения дополнительной информации о launchMode приписывать см here

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

режим

по умолчанию является "стандартным".

и:

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

+0

Большое спасибо за ваш ответ. К сожалению, изменение режима запуска не помогло. Это влияет на то, называется ли onCreate или onResume моей активности заставки первым, lol :) Однако истинная проблема заключается в том, что при попытке открыть приложение после его минимизации система не просто берет последнюю активность из верхней части стека, но вместо этого относится к активности LAUNCHER и пытается воссоздать или возобновить ее - не имеет значения. Я просто озадачен таким странным выбором активности, чтобы показать пользователю при повторном открытии приложения. приложение native Messaging всегда возвращает вас туда, где вы были, а не в начало. –

+0

Это не имеет большого смысла в отношении активности всплеска. Является ли ваша активность всплеска той, которая настроена как ваша деятельность LAUNCHER в вашем манифесте? –

+0

Вы также можете посмотреть здесь: http://stackoverflow.com/questions/2061143/android-keep-tasks-activity-stack-after-restart-from-home/2061447 –