Android: 清空所有backstack活动然后完成当前activity

Android: Clear all backstack activities and then finish current activity

我的应用程序中有各种活动,流程非常复杂。 我想要做的是,一旦连接了 USB 设备,我想清除并完成后退堆栈活动,然后完成当前 activity 和 System.exit(0) 以关闭应用程序。

我已经实现了 USB 设备侦听器。我想知道如何清除并完成回退栈活动(如果有的话,它不会每次都有任何回退活动)然后完成当前的活动。

此外,如果我的 activity A 在顶部并且它在返回堆栈中有 2 个活动(B,C)。现在如果activityA在后台运行连接usb,只有ActivityA会听对吧? (我在每个 activity 中都实现了 USB 接收器。)

如何在应用程序不崩溃的情况下实现此目的?

谢谢

在我制作的应用程序中,我输入了:

if(Globals.isExit){
  finish();
}

在每个 activity 的每个 onResume() 方法中。

Globals 是一个 class,在 manifest.xml 中被声明为一个。 全局 class 有一个名为 exit.

的布尔值

在所有活动选项菜单中,包括将 Globals.exit 设置为 true 并调用 finish()

的退出选项

那么所有未完成的活动都已完成。

不确定您是否需要使用 intent 来清除后台堆栈,或者完成后是否会为您清除它。对不起,如果我错了。

抱歉打错字了,我正在 phone。

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

Source

finishAffinity() will Finish this activity as well as all activities immediately below it in the current task that have the same affinity

如果你想要所有API级别
在您的一项活动中

Intent intent = new Intent(this, YourActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // this will clear all the stack
intent.putExtra("Exit me", true);
startActivity(intent);
finish();

然后在你的Activity onCreate() 方法中添加这个以完成 Activity

setContentView(R.layout.your_layout);
if( getIntent().getBooleanExtra("Exit me", false)){
   finish();
   return; // add this to prevent from doing unnecessary stuffs
}