如何禁用"返回"某些活动?

jul*_*jul 37 stack android android-activity

我不希望用户能够回到我的应用程序的启动画面.一个解决方案似乎是检查当前活动下面的活动是否是启动画面的实例,并在这种情况下退出应用程序,如下面的代码所示.但是,我不知道如何检查堆栈中之前的活动是什么.有人可以帮忙吗?有没有其他方法可以禁用"返回"给定的活动?

@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);
    }
}
Run Code Online (Sandbox Code Playgroud)

Rya*_*ves 121

finish()在开始下一个活动后立即调用您的启动画面活动.

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

例:

<activity android:name=".SplashActivity" android:noHistory="true"/>
Run Code Online (Sandbox Code Playgroud)

此属性指示Android在导航离开后从历史记录堆栈中删除SplashActivity.


Lef*_*nia 20

只需致电context.finish()context.startActivity()

  • 很好的选择,称为[转发](http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/Forwarding.html) (5认同)

A. *_*xxx 9

Activity从Splashscreen 调用next时,请尝试以下操作:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
Run Code Online (Sandbox Code Playgroud)