Java 如何让用户通过堆栈中的所有其他应用程序活动登录屏幕活动?
假设您有一个与web应用程序相关的Android应用程序,需要用户登录才能使用它。用户在登录屏幕活动中登录,然后继续执行其他活动。每次用户启动活动时,应用程序都会再次检查其登录凭据(凭据存储在某个中央数据库中) 当用户从一个活动跳到另一个活动时,让我们假设用户的登录凭据已从服务中吊销。下次用户访问某个活动时,应用程序将看到他不再具有访问权限。应用程序现在应该将用户踢回登录屏幕活动 但是,由于用户使用应用程序时,应用程序已经创建了一堆活动,因此如何获得登录屏幕。在到达登录屏幕活动(应该是应用程序堆栈底部的活动)之前,是否停止/销毁所有活动 或者你开始一个新的登录屏幕活动,然后直接进入那个屏幕 或者,我应该调用登录屏幕活动,并将Java 如何让用户通过堆栈中的所有其他应用程序活动登录屏幕活动?,java,android,Java,Android,假设您有一个与web应用程序相关的Android应用程序,需要用户登录才能使用它。用户在登录屏幕活动中登录,然后继续执行其他活动。每次用户启动活动时,应用程序都会再次检查其登录凭据(凭据存储在某个中央数据库中) 当用户从一个活动跳到另一个活动时,让我们假设用户的登录凭据已从服务中吊销。下次用户访问某个活动时,应用程序将看到他不再具有访问权限。应用程序现在应该将用户踢回登录屏幕活动 但是,由于用户使用应用程序时,应用程序已经创建了一堆活动,因此如何获得登录屏幕。在到达登录屏幕活动(应该是应用程序堆
标志\u Activity\u CLEAR\u TOP
传递给intent
在用户能够第二次登录(假设他恢复了凭据)后,如果该活动现在是堆栈中唯一的活动,则按“上一步”按钮将使他退出应用程序,而不是返回到吊销凭据之前的操作。最好的方法是什么?带有
标志的登录屏幕活动\u活动\u清除\u顶部
会起作用,但会删除用户的所有历史记录。你介意他们续签他们的凭证然后按回吗?这应该保留他们的历史吗
您可以考虑登录活动的<代码> FraseActhVixySunLyTope和
,这样在撤销权限后它们就不能返回堆栈onResume
请记住,您也可以在
上设置这些标志。我个人的选择是在onResume()中设置所有活动(当然,除了登录活动之外)以检查用户的凭据(我通过继承来实现这一点,我的所有活动都继承自一个抽象的AuthorizedActivity
,但做适合您的事情)。如果用户没有凭据(因为他们没有凭据或凭据已被吊销),则我startActivityForResult()
登录活动。如果LoginActivity返回有效用户,一切正常。如果该用户有效但与以前登录的用户不同,我会使用标记\u活动\u清除\u顶部
将他们带到我的根活动。从LoginActivity按后退按钮对他们没有好处,因为应用程序会将他们直接反弹到家中
我发现这种方法使我能够灵活地决定何时以及如何检查/撤销凭据,即使他们(短暂地)离开应用程序。你的问题没有一个单一的答案。这在很大程度上取决于许多设计决策。是的,我现在意识到了。我不确定是否有人们用于此的最佳实践。谢谢。你的意思是标记活动\u清除\u顶部
我猜?