Android При восстановлении приложения с домашнего экрана переключитесь на другую активность - PullRequest
0 голосов
/ 09 января 2012

У меня есть три вида деятельности, давайте назовем их Act1, Act2 и Act3.На Act1 есть форма входа в систему, которая (при успешном входе в систему) переходит к Act2 с двумя вариантами (1. Перейти к Act3, Перейти к Act3 с некоторыми дополнительными данными).Затем пользователь переходит к Act3.

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

Я хочу иметь возможность свернутьприложение, а затем, после повторного открытия, перейдите прямо к Act1, чтобы предложить пользователю снова войти в систему.Я не хочу, чтобы приложение могло возобновить работу в Act2 или Act3.

Ответы [ 2 ]

1 голос
/ 09 января 2012

Если ваше приложение действительно не чувствительно к безопасности, поведение по умолчанию должно быть лучше для пользователя: ввод логина и пароля при каждом запуске приложения может быть очень раздражающим.Возьмем, к примеру, собственное приложение GMail: оно не требует повторной аутентификации при каждом его открытии.

Теперь, если ваше приложение действительно нуждается в таком поведении (скажем, это безопасная кредитная карта или что-то в этом роде), тогдаМоим первым предположением было бы обработать onPause () Act3 и оттуда вызвать finish ().Просто будьте осторожны, чтобы не вызывать finish () дважды (см. IsFinishing ()).

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

0 голосов
/ 09 января 2012

Когда пользователь отходит от вашей активности (например, нажав кнопку «Домой»), сначала вызывается метод onPause().Вы должны быть в состоянии справиться со своей логикой там (например, позвонив finish() на Act2 или Act3).

Редактировать: хе, да, что он сказал: D

...