如何完成所有活动并关闭android中的应用程序?

rah*_*hul 22 android activity-stack android-activity

我的应用程序有以下流程:

首页 - >屏幕1->屏幕2->屏幕3->屏幕4->屏幕5>主页 - >屏幕2->主页 - >屏幕3

我的问题是,当我尝试关闭应用程序时,每当我尝试关闭应用程序时,Home活动就会打开.

我只想在用户在主屏幕上按下设备的后退键时关闭应用程序.

Rag*_*sis 78

有完成当前活动和所有父活动的finishAffinity()方法,但它仅适用于Android 4.1或更高版本.

  • 仍然留下儿童活动...例如:mainactivity launchmode 是 singleInstance,设置菜单已启动,服务在 mainactivity 上调用 startactivity,mainactivity 调用 finishAffinity...设置菜单未完成...这不是人为的,我正在编写一个应用程序由蓝牙启动和完成……似乎每个打开的活动中的广播接收器都需要确保在所有情况下都关闭 (3认同)

小智 15

这对我很有用.

  • 你应该使用FLAG_ACTIVITY_CLEAR_TASKFLAG_ACTIVITY_NEW_TASK标志.

    Intent intent = new Intent(SecondActivity.this, CloseActivity.class);
    //Clear all activities and start new task
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent);
    
    Run Code Online (Sandbox Code Playgroud)
  • onCreate()CloseActivity活动方法.

    @Override 
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        finish(); // Exit 
    }
    
    Run Code Online (Sandbox Code Playgroud)


Has*_*ter 7

使用finishAffinity()将完成当前活动和所有父活动的方法。但它仅适用于API 16+平均 Android 4.1 或更高版本。

API 16+ 使用:

finishAffinity();
Run Code Online (Sandbox Code Playgroud)

API 16 以下使用:

ActivityCompat.finishAffinity(this); //with v4 support library
Run Code Online (Sandbox Code Playgroud)

退出整个应用程序:

finishAffinity(); // Close all activites
System.exit(0);  // Releasing resources
Run Code Online (Sandbox Code Playgroud)