Вы действительно не хотите выходить из системы пользователя, когда «приложение» идет в фоновом режиме, равно как и выходить из системы пользователя веб-приложения, когда пользователь переключается на другую вкладку или сворачивает окно браузера для момент. Если бы вы делали одну из этих вещей в веб-приложении, ваши пользователи сочли бы ваше веб-приложение эпическим провалом. Точно так же, если пользователь получает телефонный звонок с неправильным номером или гаснет будильник, он будет вас раздражать, если ему придется немедленно вернуться и войти в систему, когда он только что использовал ваше приложение 5 секунд назад , Здесь под «раздраженным» я подразумеваю однократные рейтинги на Маркете и неприятные комментарии.
Автоматический выход из веб-приложения основан на неактивности с использованием файла cookie сеанса сервера.
Точно так же, когда я буду создавать защищенное приложение для Android, я буду реализовывать механизм на основе бездействия, возможно, что-то вроде этого:
Шаг # 1: Создайте класс Session
со статическим одноэлементным экземпляром. Объект Session
содержит метку времени последнего доступа.
Шаг # 2: В каждом действии onResume()
проверьте, существует ли синглтон Session
. Если нет, то это совершенно новый процесс, поэтому, если это не операция аутентификации, немедленно выполните startActivity()
, чтобы вызвать операцию аутентификации.
Шаг # 3: вернуться в onResume()
каждого действия, если существует объект Session
, вызвать что-то вроде extend()
. Это вернуло бы boolean
, true
, указывающее, что сессия все еще хороша (и временная метка была обновлена до настоящего времени), false
в противном случае. Если он возвращает false
, выполните те же действия, как если бы объект Session
был null
.
Шаг # 4. При успешном завершении вашей аутентификации устанавливается одноэлементный объект Session
с текущей отметкой времени.
Шаг № 5: В вашем методе Session
class 'extend()
вы определяете, является ли сеанс слишком старым.
Независимо от того, как пользователь попадает в ваше приложение, если сеанс слишком старый (или это совершенно новый процесс), он вынужден аутентифицироваться. Тем не менее, если пользователь ненадолго прерван - где вы и / или пользователь можете определить «кратко» - ему не нужно повторно проходить аутентификацию.