Ответ 1
Попробуйте добавить это к своей активности внутри файла манифеста:
android:launchMode="singleTask"
Это решило проблему в моем приложении.... если я правильно понимаю вашу проблему.
У меня есть приложение, которое имеет начальную активность (A - также тот, который указан в панели запуска), из которого он позволяет пользователю запускать другое действие (B). Я сохраняю состояние Activity B (onSaveInstanceState() и восстанавливаю его в onCreate()).
На некоторых телефонах (N1 и Motrola Milestone на данный момент, но не на Galaxy S) после запуска B, если пользователь нажимает кнопку "домой" (т.е. приложение переходит на задний план), а затем сразу же запускает приложение, они показывают активность A снова (не B). Но если они запустили его из "последних" приложений (нажатие кнопки "Домой" ), они будут перенесены в действие B.
Из того, что я понимаю в документах Android, если только эта задача не была убита (похоже, что здесь не так, как ничего, кроме повторного запуска активности с экрана приложения), мы должны увидеть, что активность B восстановлена при запуске ( так как это находится поверх стека). Поэтому я просто не могу понять, что здесь не так.
Изменения ориентации BTW во время работы приложения прекрасно работают (все сохраняет и восстанавливает штраф). Эта странная проблема прослушивала меня в течение некоторого времени, и в результате проб и ошибок я обнаружил, что, когда я отключил ориентацию для этого действия, а затем попытался перезапустить, получился B, чтобы показать, как ожидалось.
Так кто-нибудь еще сталкивался с чем-то подобным, и если да, то как это можно разрешить?
Я смотрю на сохранение текущей активности в SharedPreferences (как упоминалось в этом сообщении), и они восстанавливают ее из активности в действии A, однако хотели бы знать, если Мне что-то не хватает. Не должно быть B восстановлено при повторном запуске по умолчанию?
Попробуйте добавить это к своей активности внутри файла манифеста:
android:launchMode="singleTask"
Это решило проблему в моем приложении.... если я правильно понимаю вашу проблему.
Использовать android: launchMode = "singleInstance" вместо
В вашем AndroidManifest в теге активности просто добавьте
android:alwaysRetainTaskState="true"
Это связано с тем, что при нажатии значка запускается другой экземпляр приложения.
// 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. Это решит проблему.