Todas las actividades en mi aplicación requieren que un usuario inicie sesión para ver. Los usuarios pueden cerrar sesión en casi cualquier actividad. Este es un requisito de la aplicación. En cualquier momento, si el usuario cierra sesión, quiero enviarlo al inicio de sesión Activity
. En este punto, quiero que esta actividad se encuentre en la parte inferior de la pila de historial para que al presionar el botón "atrás" el usuario vuelva a la pantalla de inicio de Android.
He visto esta pregunta en diferentes lugares, todos respondidos con respuestas similares (que describo aquí), pero quiero plantearla aquí para recopilar comentarios.
Intenté abrir la actividad de inicio de sesión configurando sus Intent
indicadores, FLAG_ACTIVITY_CLEAR_TOP
que parecen hacer lo que se describe en la documentación, pero no alcanzo mi objetivo de colocar la actividad de inicio de sesión en la parte inferior de la pila del historial y evitar que el usuario navegue hacia atrás a actividades registradas previamente vistas. También intenté usar android:launchMode="singleTop"
para la actividad de inicio de sesión en el manifiesto, pero esto tampoco cumple mi objetivo (y parece no tener ningún efecto de todos modos).
Creo que necesito borrar la pila de historial o terminar todas las actividades abiertas anteriormente.
Una opción es hacer que cada actividad onCreate
verifique el estado de inicio de sesión, y finish()
si no está conectado. No me gusta esta opción, ya que el botón Atrás todavía estará disponible para su uso, navegando hacia atrás a medida que las actividades se cierran.
La siguiente opción es mantener una LinkedList
referencia de todas las actividades abiertas a las que está accesible estáticamente desde cualquier lugar (quizás utilizando referencias débiles). Al cerrar sesión, accederé a esta lista e iteraré sobre todas las actividades abiertas anteriormente, invocando finish()
cada una. Probablemente comenzaré a implementar este método pronto.
Intent
Sin embargo, prefiero usar algunos trucos de bandera para lograr esto. Me encantaría descubrir que puedo cumplir con los requisitos de mi aplicación sin tener que usar ninguno de los dos métodos que describí anteriormente.
¿Hay alguna manera de lograr esto mediante el uso Intent
o la configuración de manifiesto, o es mi segunda opción, mantener una LinkedList
de las actividades abiertas la mejor opción? ¿O hay otra opción que estoy pasando por alto por completo?