Усі дії в моїй програмі вимагають від користувача ввійти в систему для перегляду. Користувачі можуть вийти з майже будь-якої діяльності. Це вимога заявки. У будь-який момент, якщо користувач виходить із системи, я хочу надіслати його на Вхід Activity
. На даний момент я хочу, щоб ця діяльність знаходилася внизу стеку історії, щоб натискання кнопки «назад» повертало користувача на головний екран Android.
Я бачив це запитання в декількох різних місцях, на всі відповіли з подібними відповідями (які я окреслю тут), але я хочу поставити його тут, щоб зібрати відгуки.
Я спробував відкрити активність входу, встановивши його Intent
прапори, для FLAG_ACTIVITY_CLEAR_TOP
яких, схоже, це робиться так, як зазначено в документації, але не досягаю своєї мети - розмістити активність входу в нижній частині стека історії та не допустити переходу користувача назад до раніше переглянутої реєстраційної діяльності. Я також спробував використовувати android:launchMode="singleTop"
для входу в активі маніфест, але це також не досягає моєї мети (і, здається, жодного ефекту не має).
Я вважаю, що мені потрібно або очистити стек історії, або закінчити всі раніше відкриті заходи.
Один із варіантів - мати onCreate
статус реєстрації для реєстрації кожної діяльності , а finish()
якщо її не входити. Цей варіант мені не подобається, оскільки кнопка "Назад" все ще буде доступна для використання, навігація назад, коли діяльність закриється.
Наступним варіантом є підтримка LinkedList
посилань на всі відкриті види діяльності, які є статично доступними звідусіль (можливо, використовуючи слабкі посилання). Під час виходу я отримаю доступ до цього списку та повторюю всі раніше відкриті дії, посилаючись finish()
на кожну. Я, мабуть, незабаром почну впроваджувати цей метод.
Intent
Однак я б скоріше скористався хитрістю прапора. Я б із задоволенням виявив, що можу виконати вимоги моєї заявки, не використовуючи жодного з двох описаних вище методів.
Чи є спосіб досягти цього за допомогою Intent
налаштувань або маніфесту, або мій другий варіант, LinkedList
найкращим варіантом є підтримка відкритих дій? Або є інший варіант, який я повністю забуваю?