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