Android 防止某些活动在不从其他活动启动的情况下启动

Android 防止某些活动在不从其他活动启动的情况下启动,android,android-activity,Android,Android Activity,“我的应用”启动时启动的主要活动显示为一组菜单项,但访问某些菜单项启动的某些活动需要用户名和密码。用户正确输入其凭据后,就可以访问这些活动。他们还可以使用后退按钮返回菜单所在的主活动,我不要求他们再次输入凭据,只要他们仍在应用程序中 但是,如果他们在主活动中点击后退按钮,我将使用finish()终止应用程序 我看到的问题是,如果用户按住Home按钮,就会显示应用程序列表,如果他们点击我的应用程序,他们可能会被带到需要用户名和密码的“安全”活动之一。如果他们使用其中一种活动并按下Home(主页)按

“我的应用”启动时启动的主要活动显示为一组菜单项,但访问某些菜单项启动的某些活动需要用户名和密码。用户正确输入其凭据后,就可以访问这些活动。他们还可以使用后退按钮返回菜单所在的主活动,我不要求他们再次输入凭据,只要他们仍在应用程序中

但是,如果他们在主活动中点击后退按钮,我将使用finish()终止应用程序

我看到的问题是,如果用户按住Home按钮,就会显示应用程序列表,如果他们点击我的应用程序,他们可能会被带到需要用户名和密码的“安全”活动之一。如果他们使用其中一种活动并按下Home(主页)按钮,就会发生这种情况

我提出的解决方案只是使用一个全局变量来指示他们已登录,并在他们从主活动中点击后退按钮时清除该变量

但我需要在每个活动的onResume中检查此标志,以查看它们是否已登录,如果未登录,我会在onResume中执行finish(),以防止它们访问该活动


有更好的方法吗?也许是一种终止用户进入“安全”活动时产生的所有活动的方法?或者更好的是,终止我的应用程序中的所有活动?就目前而言,我有很多活动,重复简历中的代码似乎毫无意义。

为什么这种行为会成为一个问题?如果用户已经登录,为什么要阻止他在不同的应用程序之间切换,然后在安全活动中返回到您的应用程序?无论如何,我通常在需要时使用AndroidManifest中的noHistory并在相关活动中扩展onResume来执行此类控制任务(检查用户是否从另一个活动注销的唯一方法)。是否可以基于活动设置noHistory,或者这是整个应用程序的设置,意味着整个应用程序没有历史记录?如果在AndroidManifest的某些活动中设置,则表示只有这些活动没有历史记录。对于启动和登录活动非常有用。