我的应用程序中的所有活动都需要用户登录才能查看。用户几乎可以退出任何活动。这是应用程序的要求。无论何时用户注销,我都想将用户发送到Login Activity
。此时,我希望此活动位于历史记录堆栈的底部,以便按下“后退”按钮可使用户返回Android的主屏幕。
我已经看到这个问题在几个不同的地方问过,所有问题都得到了相似的答案(我在这里概述了),但是我想在这里提出来收集反馈。
我尝试通过设置其Intent
标志FLAG_ACTIVITY_CLEAR_TOP
似乎按照文档中所述进行操作来打开Login活动,但是并没有实现将Login活动放在历史记录堆栈底部并防止用户向后导航的目标。以前看过的登录活动。我也尝试android:launchMode="singleTop"
在清单中用于Login活动,但这也没有实现我的目标(而且似乎也没有任何作用)。
我相信我需要清除历史记录堆栈,或完成所有先前打开的活动。
一种选择是让每个活动的onCreate
检查都处于登录状态,finish()
如果尚未登录则。我不喜欢此选项,因为后退按钮仍然可以使用,随着活动自身关闭,它可以返回。
下一个选项是维护LinkedList
对所有打开的活动的引用,这些引用可以从任何地方静态访问(可能使用弱引用)。注销后,我将访问此列表并遍历所有先前打开的活动,并finish()
在每个活动上进行调用。我可能很快就会开始实现此方法。
但是,我宁愿使用一些Intent
标记技巧来完成此操作。我很高兴发现自己可以满足我的应用程序要求,而不必使用上面概述的两种方法中的任何一种。
有没有一种方法可以通过使用Intent
或清单设置来实现,或者我的第二个选择是保持LinkedList
打开的活动是最好的选择?还是我完全忽略了另一个选择?