Сохранить состояние активности в Android при нажатии кнопки домой - PullRequest
1 голос
/ 24 октября 2009

У меня проблема с ключом дома. Когда я нажимаю клавишу возврата домой, текущая активность скрывается, но когда я снова запускаю исполняемый файл, она начинается с первого экрана. Я переопределил все методы (onSaveInstanceState, onPause, onStop onResume), но все еще есть проблемы. Как правильно справиться с этим?

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

Ответы [ 2 ]

5 голосов
/ 24 января 2011

Я боролся с этим странным поведением более месяца, но наконец-то нашел объяснение методом проб и ошибок.

Это происходит, когда вы запускаете приложение из Eclipse, из командной строки или если вы устанавливаете приложение и нажимаете кнопку «Открыть» (вместо кнопки «Готово»), чтобы запустить приложение сразу после его установки.

Если в одном из этих случаев вы запустите приложение, перейдите к занятию 1, а затем к занятию 2, нажмите кнопку ДОМОЙ, а затем нажмите значок приложения, откроется новый экземпляр занятия 1. Не верь мне на слово. Просто нажмите НАЗАД и увидите, что он возвращает вас к вашей деятельности 2, которую вы оставили, когда нажали ДОМОЙ.

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

Таким образом, обходной путь может состоять в том, чтобы выйти из приложения, при первом запуске его из Eclipse, командной строки или кнопки «Открыть» и т. Д., Нажав кнопку НАЗАД столько раз, сколько необходимо, а затем снова войдите в приложение. С этого момента поведение будет таким, как ожидалось.

4 голосов
/ 25 октября 2009

Из того, что вы описали, вы, вероятно, переопределили android: launchMode в AndroidManifest.xml или, если вы тестируете с помощью «run as» из Eclipse, попробуйте выйти из приложения после установки и автозапуска. Затем снова запустите из эмулятора и проверьте поведение кнопки «Домой». Я полагаю, это связано с тем, что Android не помещает Activity в стек ОС при запуске из Eclipse, а затем поведение кнопки «Домой» не является обычным. Если это не решит вашу проблему, попробуйте прочитать http://developer.android.com/guide/topics/fundamentals.html#lmodes.

Надеюсь, это поможет.

...