Tutte le attività nella mia applicazione richiedono che un utente abbia effettuato l'accesso per visualizzare. Gli utenti possono disconnettersi da quasi tutte le attività. Questo è un requisito dell'applicazione. In qualsiasi momento se l'utente si disconnette, desidero inviare l'utente al Login Activity
. A questo punto desidero che questa attività si trovi nella parte inferiore dello stack della cronologia, in modo che premendo il pulsante "indietro" si riporti l'utente alla schermata principale di Android.
Ho visto questa domanda porre alcuni posti diversi, tutti hanno risposto con risposte simili (che traccerò qui), ma voglio metterlo qui per raccogliere feedback.
Ho provato ad aprire l'attività di accesso impostando i suoi Intent
flag su ciò FLAG_ACTIVITY_CLEAR_TOP
che sembra fare come indicato nella documentazione, ma non raggiungo il mio obiettivo di posizionare l'attività di accesso in fondo allo stack della cronologia e impedire all'utente di tornare indietro alle attività di accesso precedentemente visualizzate. Ho anche provato a utilizzare android:launchMode="singleTop"
l'attività di accesso nel manifest, ma questo non raggiunge neanche il mio obiettivo (e sembra non avere alcun effetto comunque).
Credo di dover cancellare lo stack della cronologia o terminare tutte le attività precedentemente aperte.
Un'opzione è fare in modo che ogni attività onCreate
controlli lo stato di accesso e, finish()
se non è stato effettuato l'accesso. Questa opzione non mi piace, poiché il pulsante Indietro sarà ancora disponibile per l'uso, tornando indietro quando le attività si chiudono.
L'opzione successiva è quella di mantenere una serie LinkedList
di riferimenti a tutte le attività aperte che sono staticamente accessibili da qualsiasi luogo (magari utilizzando riferimenti deboli). Al logout accederò a questo elenco e passerò in rassegna tutte le attività precedentemente aperte, invocando finish()
ognuna. Probabilmente inizierò presto a implementare questo metodo.
Preferirei usare qualche Intent
trucco con la bandiera per realizzare questo, comunque. Sarei felice di scoprire che posso soddisfare i requisiti della mia applicazione senza dover utilizzare nessuno dei due metodi che ho descritto sopra.
C'è un modo per ottenere questo risultato usando Intent
o manifest le impostazioni, o è la mia seconda opzione, mantenendo una LinkedList
delle attività aperte l'opzione migliore? O c'è un'altra opzione che sto completamente trascurando?