Wszystkie działania w mojej aplikacji wymagają zalogowania użytkownika, aby wyświetlić. Użytkownicy mogą wylogować się z niemal każdej aktywności. Jest to wymóg aplikacji. W dowolnym momencie, jeśli użytkownik wyloguje się, chcę wysłać użytkownika do Loginu Activity
. W tym momencie chcę, aby ta aktywność była na dole stosu historii, więc naciśnięcie przycisku „wstecz” powoduje powrót użytkownika do ekranu głównego Androida.
Widziałem to pytanie zadane w kilku różnych miejscach, na wszystkie odpowiedziały podobne odpowiedzi (które tutaj zarysowuję), ale chcę je zadać tutaj, aby zebrać opinie.
Próbowałem otworzyć działanie logowania, ustawiając jego Intent
flagi, FLAG_ACTIVITY_CLEAR_TOP
które wydają się robić tak, jak opisano w dokumentacji, ale nie osiągam celu, jakim jest umieszczenie działania logowania na dole stosu historii i uniemożliwienie użytkownikowi powrotu do poprzedniej strony do wcześniej zarejestrowanych zalogowanych działań. Próbowałem również użyć android:launchMode="singleTop"
do zalogowania się w manifeście, ale to również nie osiąga mojego celu (i wydaje się, że i tak nie ma żadnego efektu).
Uważam, że muszę wyczyścić stos historii lub zakończyć wszystkie wcześniej otwarte działania.
Jedną z opcji jest onCreate
status kontroli każdego działania zalogowany, a finish()
jeśli nie zalogowany. Nie podoba mi się ta opcja, ponieważ przycisk Wstecz będzie nadal dostępny do użycia, nawigując wstecz w miarę zamykania się działań.
Kolejną opcją jest utrzymanie a LinkedList
odniesień do wszystkich otwartych działań, które są dostępne statycznie zewsząd (być może przy użyciu słabych odniesień). Po wylogowaniu uzyskam dostęp do tej listy i powtarzam wszystkie wcześniej otwarte działania, wywołując finish()
każdą z nich. Prawdopodobnie zacznę wkrótce wdrażać tę metodę.
Wolę jednak użyć pewnych Intent
sztuczek z flagą, aby to osiągnąć. Z przyjemnością stwierdzę, że mogę spełnić wymagania mojej aplikacji bez konieczności korzystania z jednej z dwóch opisanych powyżej metod.
Czy istnieje sposób na osiągnięcie tego poprzez użycie Intent
lub manifestowanie ustawień, czy też moja druga opcja, utrzymywanie LinkedList
otwartych działań, jest najlepszą opcją? Czy jest jeszcze inna opcja, którą całkowicie pomijam?