Как startActivity решает, начинать ли остановленную деятельность или создавать новую? - PullRequest
2 голосов
/ 18 февраля 2010

Короче говоря, у меня есть LaunchActivity, которая всегда вызывается LAUNCHER (то есть домашний экран). Затем он запускает LoginActivity, а затем закрывает себя.

Это поток:

  1. Пользователь запускает приложение
  2. LaunchActivity запускается, запускается LoginActivity, а затем звонки завершить () на себя (на данный момент LoginActivity - единственная активность в стеке
  3. Пользователь нажимает кнопку «Домой», останавливаясь LoginActivity
  4. Пользователь снова запускает приложение

Когда приложение запускается во второй раз, могут произойти две вещи:

  1. LaunchActivity начинается, заканчивается сам, а затем НАЧИНАЕТСЯ LoginActivity
  2. LaunchActivity начинается, заканчивается сам, а затем создает LoginActivity, так что теперь есть два LoginActivity в стеке.

(2), кажется, происходит, когда я перезапускаю Eclipse и симулятор (да, я знаю, черная магия).

Некоторая дополнительная информация: я не использую стартовые флаги, и в моем манифесте не определены ни какие launchModes.

Ответы [ 2 ]

3 голосов
/ 23 февраля 2010

Я думаю, что вы хотите установить Android: launchMode = "singleTask". Здесь есть базовое объяснение:

http://groups.google.com/group/android-developers/browse_thread/thread/e29bd82a7fec43c6/44835d74b0af3f5f?lnk=gst&q=ellipsoidmobile#44835d74b0af3f5f

Из ссылки "Если ваша активность запускается из другого приложения, без использования единого задача, но вы хотите, чтобы ваше текущее приложение вышло на передний план вместо того, чтобы новый экземпляр этого действия начался в задаче другого приложения. Примером приложения, которое делает это, является браузер. «

После прочтения вашего вопроса это выглядит так, как вы хотите. Установите launchMode = "singleTask" на LoginActivity, и когда ваша LaunchActivity запускает LoginActivity, она должна перезапустить существующую вместо создания второго экземпляра.

0 голосов
/ 19 февраля 2010

Я предполагаю, что это связано с тем, нужно ли убивать LoginActivity, пока оно было в фоновом режиме. Как объясняется жизненный цикл действия , остановленное действие (невидимое) можно прервать, если системе требуются ресурсы.

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