如何禁用“返回”到某些活动?

我不希望用户能够回到我的应用程序的splashscreen。 一种解决scheme似乎是检查当前的活动是否是启animation面的一个实例,在这种情况下退出应用程序,如下面的代码所示。 但是,我不知道如何检查堆栈中以前的活动。 任何人都可以帮忙? 有没有其他方法来禁用“返回”给定的活动?

@Override public void onBackPressed() { if(<previous activity in stack is an instance of splashscreen>){ Intent exit_intent=new Intent(CurrentActivity.this, SplashScreen.class); exit_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); exit_intent.putExtra("EXIT", true); context.startActivity(exit_intent); } } 

在开始下一个活动之后立即在Splash Screen活动中调用finish()

另一种方法是将此属性添加到AndroidManifest.xml的活动: android:noHistory="true"

例:

 <activity android:name=".SplashActivity" android:noHistory="true"/> 

该属性指示Android从历史堆栈中移除SplashActivity,一旦从其导航离开。

context.finish()之后调用context.startActivity()

从Splashscreen调用下一个Activity时请尝试以下操作:

 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 
 <activity android:name=".SplashActivity" android:noHistory="true"/> 

从文档 :

当用户离开它并且不再显示在屏幕上时,是否应该从活动堆栈中移除活动并完成(调用其finish()方法) – 如果应该完成,则为“true”,而“false”如果不。 默认值是“false”。

值“真”意味着活动不会留下历史痕迹。 它不会留在任务的活动堆栈中,所以用户将不能返回到它。 在这种情况下,如果您为此活动的结果启动另一个活动,则不会调用onActivityResult()。

此属性是在API级别3中引入的。