Все действия в моем приложении требуют, чтобы пользователь был авторизован для просмотра. Пользователи могут выйти практически из любой активности. Это требование приложения. В любой момент, если пользователь выходит из системы, я хочу отправить пользователя в логин Activity
. На данный момент я хочу, чтобы это действие было в нижней части стека истории, чтобы при нажатии кнопки «назад» пользователь возвращался на домашний экран Android.
Я видел, как этот вопрос задавали в нескольких разных местах, все отвечали схожими ответами (которые я обрисовал здесь), но я хочу поставить его здесь, чтобы собрать отзывы.
Я попытался открыть действие входа в систему, установив его Intent
флаги, FLAG_ACTIVITY_CLEAR_TOP
которые, как кажется, описываются в документации, но не достигает моей цели - поместить действие входа в конец стека истории и не позволяет пользователю вернуться назад. к ранее увиденным вошедшим в систему действиям. Я также пытался использоватьandroid:launchMode="singleTop"
для входа в активность в манифесте, но это также не достигает моей цели (и, похоже, в любом случае не имеет никакого эффекта).
Я считаю, что мне нужно либо очистить стек истории, либо завершить все ранее открытые действия.
Один из вариантов состоит в том, чтобы иметь onCreate
статус входа для каждой проверки активности , иfinish()
если нет - для входа. Мне не нравится эта опция, так как кнопка «Назад» все еще будет доступна для использования, навигация назад, когда действия закрываются.
Следующим вариантом является сохранение LinkedList
ссылок на все открытые действия, которые статически доступны из любого места (возможно, с использованием слабых ссылок). При выходе я получу доступ к этому списку и переберу все ранее открытые действия, вызываяfinish()
на каждое из них. Я, вероятно, скоро начну реализовывать этот метод.
Однако я бы предпочел использовать некоторую Intent
хитрость для флага. Я был бы очень рад обнаружить, что могу выполнить требования своего приложения, не используя ни один из двух методов, которые я описал выше.
Есть ли способ сделать это с помощью Intent
настроек или манифеста, или мой второй вариант - поддерживать LinkedList
открытые действия? Или есть другой вариант, который я полностью пропускаю?