Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何让用户通过堆栈中的所有其他应用程序活动登录屏幕活动?_Java_Android - Fatal编程技术网

Java 如何让用户通过堆栈中的所有其他应用程序活动登录屏幕活动?

Java 如何让用户通过堆栈中的所有其他应用程序活动登录屏幕活动?,java,android,Java,Android,假设您有一个与web应用程序相关的Android应用程序,需要用户登录才能使用它。用户在登录屏幕活动中登录,然后继续执行其他活动。每次用户启动活动时,应用程序都会再次检查其登录凭据(凭据存储在某个中央数据库中) 当用户从一个活动跳到另一个活动时,让我们假设用户的登录凭据已从服务中吊销。下次用户访问某个活动时,应用程序将看到他不再具有访问权限。应用程序现在应该将用户踢回登录屏幕活动 但是,由于用户使用应用程序时,应用程序已经创建了一堆活动,因此如何获得登录屏幕。在到达登录屏幕活动(应该是应用程序堆

假设您有一个与web应用程序相关的Android应用程序,需要用户登录才能使用它。用户在登录屏幕活动中登录,然后继续执行其他活动。每次用户启动活动时,应用程序都会再次检查其登录凭据(凭据存储在某个中央数据库中)

当用户从一个活动跳到另一个活动时,让我们假设用户的登录凭据已从服务中吊销。下次用户访问某个活动时,应用程序将看到他不再具有访问权限。应用程序现在应该将用户踢回登录屏幕活动

但是,由于用户使用应用程序时,应用程序已经创建了一堆活动,因此如何获得登录屏幕。在到达登录屏幕活动(应该是应用程序堆栈底部的活动)之前,是否停止/销毁所有活动

或者你开始一个新的登录屏幕活动,然后直接进入那个屏幕

或者,我应该调用登录屏幕活动,并将
标志\u Activity\u CLEAR\u TOP
传递给intent


在用户能够第二次登录(假设他恢复了凭据)后,如果该活动现在是堆栈中唯一的活动,则按“上一步”按钮将使他退出应用程序,而不是返回到吊销凭据之前的操作。最好的方法是什么?

带有
标志的登录屏幕活动\u活动\u清除\u顶部
会起作用,但会删除用户的所有历史记录。你介意他们续签他们的凭证然后按回吗?这应该保留他们的历史吗

您可以考虑登录活动的<代码> FraseActhVixySunLyTope和FrasyAccViviySoNoYistAs/Cuth>。 如果要将以前的所有任务重定向到登录屏幕,请确保在恢复时签入

onResume
,这样在撤销权限后它们就不能返回堆栈


请记住,您也可以在

上设置这些标志。我个人的选择是在
onResume()中设置所有活动(当然,除了登录活动之外)以检查用户的凭据(我通过继承来实现这一点,我的所有活动都继承自一个抽象的
AuthorizedActivity
,但做适合您的事情)。如果用户没有凭据(因为他们没有凭据或凭据已被吊销),则我
startActivityForResult()
登录活动。如果LoginActivity返回有效用户,一切正常。如果该用户有效但与以前登录的用户不同,我会使用
标记\u活动\u清除\u顶部
将他们带到我的根活动。从LoginActivity按后退按钮对他们没有好处,因为应用程序会将他们直接反弹到家中


我发现这种方法使我能够灵活地决定何时以及如何检查/撤销凭据,即使他们(短暂地)离开应用程序。

你的问题没有一个单一的答案。这在很大程度上取决于许多设计决策。是的,我现在意识到了。我不确定是否有人们用于此的最佳实践。谢谢。你的意思是
标记活动\u清除\u顶部
我猜?