Подтвердить что ты не робот

После нажатия кнопки "Домой" повторное запуск приложения показывает начальную активность, не текущую

У меня есть приложение, которое имеет начальную активность (A - также тот, который указан в панели запуска), из которого он позволяет пользователю запускать другое действие (B). Я сохраняю состояние Activity B (onSaveInstanceState() и восстанавливаю его в onCreate()).

На некоторых телефонах (N1 и Motrola Milestone на данный момент, но не на Galaxy S) после запуска B, если пользователь нажимает кнопку "домой" (т.е. приложение переходит на задний план), а затем сразу же запускает приложение, они показывают активность A снова (не B). Но если они запустили его из "последних" приложений (нажатие кнопки "Домой" ), они будут перенесены в действие B.

Из того, что я понимаю в документах Android, если только эта задача не была убита (похоже, что здесь не так, как ничего, кроме повторного запуска активности с экрана приложения), мы должны увидеть, что активность B восстановлена ​​при запуске ( так как это находится поверх стека). Поэтому я просто не могу понять, что здесь не так.

Изменения ориентации BTW во время работы приложения прекрасно работают (все сохраняет и восстанавливает штраф). Эта странная проблема прослушивала меня в течение некоторого времени, и в результате проб и ошибок я обнаружил, что, когда я отключил ориентацию для этого действия, а затем попытался перезапустить, получился B, чтобы показать, как ожидалось.

Так кто-нибудь еще сталкивался с чем-то подобным, и если да, то как это можно разрешить?

Я смотрю на сохранение текущей активности в SharedPreferences (как упоминалось в этом сообщении), и они восстанавливают ее из активности в действии A, однако хотели бы знать, если Мне что-то не хватает. Не должно быть B восстановлено при повторном запуске по умолчанию?

4b9b3361

Ответ 1

Попробуйте добавить это к своей активности внутри файла манифеста:

android:launchMode="singleTask"

Это решило проблему в моем приложении.... если я правильно понимаю вашу проблему.

Ответ 2

Использовать android: launchMode = "singleInstance" вместо

Ответ 3

В вашем AndroidManifest в теге активности просто добавьте

android:alwaysRetainTaskState="true"

Ответ 4

Это связано с тем, что при нажатии значка запускается другой экземпляр приложения.

  // To prevent launching another instance of app by clicking app icon 
                if (!isTaskRoot()
                        && getIntent().hasCategory(Intent.CATEGORY_LAUNCHER)
                        && getIntent().getAction() != null
                        && getIntent().getAction().equals(Intent.ACTION_MAIN)) {

                    finish();
                    return;
                }

напишите приведенный выше код в своей активности запуска перед вызовом setContentView. Это решит проблему.