Android 从第二个活动中终止“后退”按钮上的应用程序

Android 从第二个活动中终止“后退”按钮上的应用程序,android,kill,Android,Kill,我有一个主要活动和第二个活动。调用第二个活动时,我没有使用覆盖finish()。我在第二个activityonClick中有一个按钮,我需要终止该应用程序。是否有办法在单击按钮时清除整个后台堆栈?您可以在启动第二个活动时向intent添加标志 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 你不能用Android的设计杀死整个应用程序。 清除整个后退

我有一个主要活动和第二个活动。调用第二个活动时,我没有使用覆盖
finish()
。我在第二个activity
onClick
中有一个按钮,我需要终止该应用程序。是否有办法在单击按钮时清除整个后台堆栈?

您可以在启动第二个活动时向intent添加标志

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

你不能用Android的设计杀死整个应用程序。 清除整个后退的唯一方法是使用所需的标志开始新的活动

如果您只想在单击按钮时执行此操作,而不想在第二个活动开始时执行此操作,我认为这里只有一个解决方法

您应该在该按钮上单击call third activity(调用第三个活动)(空,只是存根),并带有所需的标志:

Intent intent = new Intent(this, MockActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); //clear backstack
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); //user will not notice activity appear, instead of default animation, which look like starting other app.
startActivity(intent);
在第三个活动中,在
OnCreate()
方法中,只需调用
finish()

你会得到什么结果?用户点击按钮后,整个应用程序将被关闭,没有回退历史记录。
您还应该在Manifest
android:noHistory=“true”
中添加此第三个活动,这样它也不会出现在历史记录中。

您可以尝试退出按钮

    addQuitButtonListener();

    private void addQuitButtonListener(){
    Button appbtn = (Button) findViewById(R.id.quit);
    appbtn.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v){
    System.exit(0);
    }});}

您还可以使用startActivityForResult检查启动第二个活动,当您完成第二个活动时,是否也应完成第一个活动

额外的finish()是不必要的,因为标志暗示了这一点。根据我的经验,在新活动开始之前显式退出当前活动,实际上会引入潜在的UI问题。思考图层-您希望确保新视图在旧视图消失之前出现。如果最后一个finish()在那里,你就失去了保证。在旧设备上,您可以期望在新视图出现之前看到Backback flash。示例:在新视图出现之前,主屏幕可能会闪烁1秒。谢谢,你说得对,我不确定是否要添加它。我已将其从代码中删除。您是否希望终止应用程序或活动?