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